Merge K Sorted Array
严氏北美IT公司面试真题汇总和解答论坛 :: LinkedIn公司面试真题: 注册用户可以看到隐藏题目:2017年下半年上机题,8 9 10三个月的onsite面试真题 :: 合并两个XX系列(基础+核心+高频题)
Page 1 of 1
Merge K Sorted Array
static class ArrayContainer {
int[] array;
int index;
public ArrayContainer(int[] array, int index) {
this.array = array;
this.index = index;
}
}
public static int[] mergeKSortedArray(int[][] inputArrays) {
PriorityQueue<ArrayContainer> pq = new PriorityQueue<ArrayContainer>(inputArrays.length, new Comparator<ArrayContainer>(){
public int compare(ArrayContainer a,ArrayContainer b){
return a.array[a.index]-b.array[b.index];
}
});
int total=0;
for (int i = 0; i < inputArrays.length; i++) {
pq.add(new ArrayContainer(inputArrays[i], 0));
total = total + inputArrays[i].length;
}
int m=0;
int res[] = new int[total];
while(!pq.isEmpty()){
ArrayContainer ac = pq.poll();
res[m++]=ac.array[ac.index];
if(ac.index < ac.array.length-1)
pq.add(new ArrayContainer(ac.array, ac.index+1));
}
return res;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr1 = { 1, 3, 5, 7 };
int[] arr2 = { 2, 4, 6, 8 };
int[] arr3 = { 0, 9, 10, 11 };
int[] result = mergeKSortedArray(new int[][] { arr1, arr2, arr3 });
System.out.println(Arrays.toString(result));
}
int[] array;
int index;
public ArrayContainer(int[] array, int index) {
this.array = array;
this.index = index;
}
}
public static int[] mergeKSortedArray(int[][] inputArrays) {
PriorityQueue<ArrayContainer> pq = new PriorityQueue<ArrayContainer>(inputArrays.length, new Comparator<ArrayContainer>(){
public int compare(ArrayContainer a,ArrayContainer b){
return a.array[a.index]-b.array[b.index];
}
});
int total=0;
for (int i = 0; i < inputArrays.length; i++) {
pq.add(new ArrayContainer(inputArrays[i], 0));
total = total + inputArrays[i].length;
}
int m=0;
int res[] = new int[total];
while(!pq.isEmpty()){
ArrayContainer ac = pq.poll();
res[m++]=ac.array[ac.index];
if(ac.index < ac.array.length-1)
pq.add(new ArrayContainer(ac.array, ac.index+1));
}
return res;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr1 = { 1, 3, 5, 7 };
int[] arr2 = { 2, 4, 6, 8 };
int[] arr3 = { 0, 9, 10, 11 };
int[] result = mergeKSortedArray(new int[][] { arr1, arr2, arr3 });
System.out.println(Arrays.toString(result));
}
Similar topics
» Merge Two Sorted Array
» Merge Two Sorted List
» Merge K Sorted Arraylist
» Merge K Sorted Linkedlists
» Merge two sorted LinkedLists
» Merge Two Sorted List
» Merge K Sorted Arraylist
» Merge K Sorted Linkedlists
» Merge two sorted LinkedLists
严氏北美IT公司面试真题汇总和解答论坛 :: LinkedIn公司面试真题: 注册用户可以看到隐藏题目:2017年下半年上机题,8 9 10三个月的onsite面试真题 :: 合并两个XX系列(基础+核心+高频题)
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum
|
|