首页 > 代码库 > 【leetcode】Merge Sorted Array
【leetcode】Merge Sorted Array
Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.
题解:查了资料才想到要从后往前合并。把end初始化为m+n-1,即A在合并后最后一个元素的位置。然后把A和B从后往前比较,较大的元素放在end所指的地方。最后要特别注意B的处理,如果A的元素遍历完了,但是B中的元素还没有全部放到A中去,要再用一个while循环单独处理B。
代码如下:
1 class Solution { 2 public: 3 void merge(int A[], int m, int B[], int n) { 4 int end = m+n-1; 5 int i,j; 6 for(i = m-1,j =n-1;i>=0 && j>=0;){ 7 if(A[i] > B[j]){ 8 A[end] = A[i]; 9 i--; 10 } 11 else{ 12 A[end] = B[j]; 13 j--; 14 } 15 end --; 16 } 17 18 //B中还有元素,继续处理 19 while(j >= 0) 20 { 21 A[end] = B[j]; 22 j--; 23 end--; 24 } 25 } 26 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。