标签:
Given two sorted integer arrays A and B, merge B into A as one sorted array.
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 and n
class Solution { public: /** * @param A: sorted integer array A which has m elements, * but size of A is m+n * @param B: sorted integer array B which has n elements * @return: void */ void mergeSortedArray(int A[], int m, int B[], int n) { // write your code here int i; for (i = m+n-1; i >= 0, n>0, m>0; --i){ if(A[m-1] > B[n-1]){ A[i] = A[m-1]; --m; } else { A[i] = B[n-1]; --n; } } if(m==0){ for(int k = n-1; k>=0; --k){ A[i] = B[k]; --i; } } } };
漂亮的写法
public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { if(nums2 == null || n == 0) return ; int i = m - 1, j = n - 1; while(i >= 0 && j >= 0) { if(nums1[i] > nums2[j]) { nums1[i + j + 1] = nums1[i]; --i; } else { nums1[i + j + 1] = nums2[j]; --j; } } while(j >= 0) { nums1[j] = nums2[j]; --j; } } }
标签:
原文地址:http://www.cnblogs.com/codingEskimo/p/5732090.html