Merge Sorted Array
Given two sorted integer arrays nums1 and nums2, merge nums2 into
nums1 as one sorted array.Note: You may assume that nums1 has enough space (size that is greater
or equal to m + n) to hold additional elements from nums2. The number
of elements initialized in nums1 and nums2 are m and n respectively.
将nums1和nums2合并到nums1中去,因为一直两个数组的大小,所以从后往前添加。
void merge(int* nums1, int m, int* nums2, int n) {
int p = m+n;
int i = m -1, j =n-1;
int counter=0;
int x;
while(i>=0||j>=0){
if(j<0)
{x = nums1[i];--i;}
else if(i<0)
{x = nums2[j];--j;}
else if(nums1[i]>=nums2[j])
{x = nums1[i];--i;}
else
{x = nums2[j];--j;}
++counter;
nums1[p-counter]= x;
}
}
0ms AC
while的判断条件是||,实际上可以适用&&
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int i=m-1;
int j=n-1;
int k = m+n-1;
while(i >=0 && j>=0)
{
if(A[i] > B[j])
A[k--] = A[i--];
else
A[k--] = B[j--];
}
while(j>=0)
A[k--] = B[j--];
}
};