东莞原创设计院官网,网站关键词优化技巧,家用电脑做网站教程,WordPress错误返回题目描述
推荐多样性需要从多个列表中选择元素#xff0c;一次性要返回N屏数据#xff08;窗口数量#xff09;#xff0c;每屏展示K个元素#xff08;窗口大小#xff09;#xff0c;选择策略#xff1a; 各个列表元素需要做穿插处理#xff0c;即先从第一个列表中为…题目描述
推荐多样性需要从多个列表中选择元素一次性要返回N屏数据窗口数量每屏展示K个元素窗口大小选择策略 各个列表元素需要做穿插处理即先从第一个列表中为每屏选择一个元素再从第二个列表中为每屏选择一个元素依次类推 每个列表的元素尽量均分为N份如果不够N个也要全部分配完参考样例图
1从第一个列表中选择4条0 1 2 3分别放到4个窗口中
2从第二个列表中选择4条10 11 12 13分别放到4个窗口中
3从第三个列表中选择4条20 21 22 23分别放到4个窗口中
4再从第一个列表中选择4条4 5 6 7分别放到4个窗口中
5再从第一个列表中选择由于数量不足4条取剩下的2条放到窗口1和窗口2
6再从第二个列表中选择由于数量不足4条并且总的元素数达到窗口要求取18 19放到窗口3和窗口4 输入描述
第一行输入为N表示需要输出的窗口数量取值范围 [1, 10]
第二行输入为K表示每个窗口需要的元素数量取值范围 [1, 100]
之后的行数不定行数取值范围[1,10]表示每个列表输出的元素列表。元素之间以空格分隔已经过排序处理每个列表输出的元素数量取值范围[1,100]
输出描述
输出元素列表元素数量窗口数量*窗口大小元素之间以空格分隔多个窗口合并为一个列表输出参考样例
先输出窗口1的元素列表再输出窗口2的元素列表再输出窗口3的元素列表最后输出窗口4的元素列表
补充说明 每个列表会保证元素数量满足窗口要求不需要考虑元素不足情况 每个列表的元素已去重不需要考虑元素重复情况 每个列表的元素列表均不为空不需要考虑列表为空情况 每个列表的元素列表已经过排序处理输出结果要保证不改变同一个列表的元素顺序 每个列表的元素数量可能是不同的
示例1
输入
4 7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 输出
0 10 20 4 14 24 8 1 11 21 5 15 25 9 2 12 22 6 16 26 18 3 13 23 7 17 27 19 说明
题解
感觉这个题目有歧义 假如 有一行被取走了三个元素还有4个元素下一次在该行取四个元素还是取一个元素没有说明
源码 Java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Windows {static Input input;static {input new Input(4\n 7\n 0 1 2 3 4 5 6 7 8 9\n 10 11 12 13 14 15 16 17 18 19\n 20 21 22 23 24 25 26 27 28 29);}public static void main(String[] args) {int windowSize Integer.parseInt(input.nextLine());int content Integer.parseInt(input.nextLine());String[][] matrix new String[windowSize][content];ListListString list new ArrayList();while (input.hasNextLine()) {String line input.nextLine();String[] split line.split( );ListString list1 Arrays.asList(split);list.add(list1);}int[] index new int[list.size()];int count 0;for (int i 0; i content; i) {int old count;for (int j 0; j windowSize; j) {while (index[count] list.get(count).size()) {count;count count % list.size();}matrix[j][i] list.get(count).get(index[count]);index[count];}if (count old) {// 移动到下一行count;count count % list.size();while (index[count] list.get(count).size()) {count;count count % list.size();}}}for (int i 0; i windowSize; i) {for (int j 0; j content; j) {System.out.print(matrix[i][j] );}}}}