题目:
合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
挑战
你能否优化你的算法,如果其中一个数组很大而另一个数组很小?
解题:
利用Java的ArrayList很简单的,时间复杂度O(n+m)两个数组都要遍历一遍,对应两个数组长度差别很大的情况,效率就低了
Java程序:
class Solution { /** * @param A and B: sorted integer array A and B. * @return: A new sorted integer array */ public ArrayList<Integer> mergeSortedArray(ArrayList<Integer> A, ArrayList<Integer> B) { // write your code here ArrayList merge = new ArrayList(); int aSize = A.size(); int bSize = B.size(); int i=0; int j = 0; while(i<aSize && j<bSize){ if(A.get(i)<=B.get(j)){ merge.add(A.get(i)); i++; }else{ merge.add(B.get(j)); j++; } } while(i<aSize){ merge.add(A.get(i)); i++; } while(j<bSize){ merge.add(B.get(j)); j++; } return merge; } }