合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
挑战
你能否优化你的算法,如果其中一个数组很大而另一个数组很小?
解题思路:这道题为了优化算法,我想的是把元素多的数组A向元素少的数组B中添加;遍历元素少的数组B,遇到A中比当前B中小的即可插进去,当B遍历完之后,将其余的A全部放在B的末尾即可。
1 class Solution { 2 /** 3 * @param A and B: sorted integer array A and B. 4 * @return: A new sorted integer array 5 */ 6 public ArrayList<Integer> mergeSortedArray(ArrayList<Integer> A, ArrayList<Integer> B) { 7 // write your code here 8 if(A.size()<B.size()){ 9 ArrayList<Integer> tmp = A; 10 A = B; 11 B = tmp; 12 }; 13 int i =0 ,j=0; 14 while(i<A.size()&&j<B.size()){ 15 if(A.get(i)<B.get(j)){ 16 B.add(j,A.get(i)); 17 i++; 18 j++; 19 }else{ 20 j++; 21 } 22 } 23 if(j==B.size()&&i<A.size()){ 24 while(i<A.size()){ 25 B.add(A.get(i)); 26 i++; 27 } 28 } 29 return B; 30 } 31 }