很简单...都做过...
不过让就用A,B这两个数组,一下忘了...
思维习惯就是去选小的啦,其实我们可以选大的放到最后不就好处理了!
class Solution { public: void merge(int A[], int m, int B[], int n) { int last = m + n - 1; m--;n--; while(m >= 0 && n >=0){ if(A[m] > B[n]){ A[last] = A[m]; m--; }else{ A[last]= B[n]; n--; } last--; } if(n >= 0){ while(last >= 0){ A[last] = B[n]; last--; n--; } } } };
class Solution { public: void merge(int A[], int m, int B[], int n) { int size = m + n - 1; m--; n--; while(m >= 0 && n >= 0) { if (A[m] > B[n]) { A[size--] = A[m]; m--; } else { A[size--] = B[n]; n--; } } while(n >= 0) A[size--] = B[n--]; } };
by 1957