算法刷题

【小算法】Java中对不定长度的List,最大值为X,大于X的进行平均分组,如果不能平均分组的,每组相差不能超过1

题目:请使用Java完成对不定长度的List,进行分组,假设list最大20,分组后,每组不能大于20.请平均分组,如果不能平均分的,每组长度相差,不能超过1.思路:①:list的长度是size,判断长度如果小于等于20的,直接返回;②:如果长度大于20的情况,要计算需要分多少组。分组的小算法:size/20+(size%20>0?1:0)。变量名字:num_groups③:计算每组的基本大

题目:
请使用Java完成对不定长度的List,进行分组,假设list最大20,分组后,每组不能大于20.请平均分组,如果不能平均分的,每组长度相差,不能超过1.

例如:

有list的长度是x,如果长度不大于20,就不分割,如果大于20进行平均分配,但是每组长度相差不能超过1。比如长度21分割两组,一组长度11一组长度10;再比如长度55,分三组,每组长度分别是19,18,18

思路:

①:list的长度是size,判断长度如果小于等于20的,直接返回;

②:如果长度大于20的情况,要计算需要分多少组。分组的小算法:size/20 + (size % 20 >0?1:0)。变量名字:num_groups

③:计算每组的基本大小:size/ 分组的数量 = 每组的大小。变量名:group_size

④:计算剩余的元素数量:size % 分组数量 = 剩余元素的大小.变量名字:remaining

⑤:按照基本大小取出元素:使用到list进行分页处理

⑥:如果还有剩余的元素,则追加到当前组中

完整的代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class SplitListExample {

    public static void main(String[] args) {
        // Create a list with 25 elements
        List<Integer> lst = new ArrayList<>();
        for (int i = 0; i < 25; i++) {
   

原创不易,完成人机校验,阅读全文

相关推荐