Merge k Sorted Arrays
来源:互联网 发布:orcl 数据库未打开 编辑:程序博客网 时间:2024/05/22 04:46
此题是自己的一个学习过程,真是第一次用PriortyQueue,如何定义一个class并在当中实现Comparable接口,如何用PriortyQueue的思维去处理问题。
在定义ArrayContainer中,一定要明确的是index到底代表什么,是自身数组的当前下标,而与[][]的循环无关,所以当中的第一个错误不应该。第二个错误,是告诉我们要处理边界条件。
整个思路参考:点击打开链接
/** * @param arrays k sorted integer arrays * @return a sorted array */ public List<Integer> mergekSortedArrays(int[][] arrays) { // Write your code here List<Integer> results = new ArrayList<>(); if (arrays == null || arrays.length == 0) { return results; } PriorityQueue<ArrayContainer> pq = new PriorityQueue<>(); for (int i = 0; i < arrays.length; i++) { ////2 if (arrays[i].length != 0) { ////2 //1 ArrayContainer ac = new ArrayContainer(arrays[i], i); ArrayContainer ac = new ArrayContainer(arrays[i], 0); pq.add(ac); } } while (!pq.isEmpty()) { ArrayContainer ac = pq.poll(); results.add(ac.array[ac.index++]); if (ac.index < ac.array.length) { pq.add(new ArrayContainer(ac.array, ac.index)); } } return results; } private class ArrayContainer implements Comparable<ArrayContainer> { int []array; int index; public ArrayContainer (int []array, int index) { this.array = array; this.index = index; } @Override public int compareTo(ArrayContainer o) { return this.array[index] - o.array[o.index]; } }
0 0
- Merge k Sorted Arrays
- Merge k Sorted Arrays
- Merge k Sorted Arrays
- [刷题] Merge k Sorted Arrays
- Leetcode: Merge Sorted Arrays
- Merge Sorted Lists and Merge Sorted Arrays
- #6 Merge Two Sorted Arrays
- Merge K Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge K Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Genymotion加速下载虚拟镜像速度慢失败Connection timeout
- 深入学习java并发编程:CopyOnWriteArrayList<E>实现
- Scala学习笔记
- STM32F0xx_DMA收发USART数据配置详细过程
- 6、单例模式
- Merge k Sorted Arrays
- application共享变量
- 键盘回车事件导致页面刷新
- xml解析之使用dom4j的api对xml文件进行CRUD(二)
- Java 正则表达式
- ldpack工作日记-2016/5/30
- ORM使用注意
- Oracle Procedure详解
- GC的三种方式