合并排序数组

合并两个排序的整数数组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 }
原文地址:https://www.cnblogs.com/wangnanabuaa/p/4996497.html