public int[] mergekSortedArrays(int[][] arrays) { List<Integer> res = new ArrayList<>(); int high = arrays.length; Queue<int[]> queue = new PriorityQueue<>(high, Comparator.comparingInt(o -> o[0])); for (int i = 0; i < high; i++) { if (arrays[i].length == 0) continue; int[] node = new int[3]; node[0] = arrays[i][0]; node[1] = i; // node[2] = 0; queue.offer(node); } while (!queue.isEmpty()) { int[] cur = queue.poll(); res.add(cur[0]); // 结点到达当前数组的最后一位 int arrayIndex = cur[1], index = cur[2]; if (index == arrays[arrayIndex].length - 1) continue; cur[0] = arrays[arrayIndex][index + 1]; // cur[1] = arrayIndex; cur[2] = index + 1; queue.offer(cur); } return res.isEmpty() ? new int[0] : res.stream().mapToInt(value -> value).toArray(); }
点赞 1

相关推荐

点赞 评论 收藏
分享
11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务