lintcode 上还超时。。。
public class Solution {
/**
* @param arrays k sorted integer arrays
* @return a sorted array
*/
public List<Integer> mergekSortedArrays(int[][] arrays) {
// Write your code here
List<Integer> res = new LinkedList<>();
if (arrays == null || arrays.length == 0 || arrays[0].length == 0) {
return res;
}
PriorityQueue<Containor> queue = new PriorityQueue<>(11, new Comparator<Containor>(){
@Override
public int compare(Containor a, Containor b){
return a.value - b.value;
}
});
for (int i = 0; i < arrays.length; i++) {
queue.offer(new Containor(i, 0, arrays[i][0]));
}
while (!queue.isEmpty()) {
Containor c = queue.poll();
res.add(c.value);
if (c.idxElement + 1 < arrays[c.idxArray].length) {
queue.offer(new Containor(c.idxArray, c.idxElement + 1, arrays[c.idxArray][c.idxElement + 1]));
}
}
return res;
}
class Containor {
int idxArray;
int idxElement;
int value;
public Containor (int idxArray, int idxElement, int value) {
this.idxArray = idxArray;
this.idxElement = idxElement;
this.value = value;
}
}
}