LeetCode: Merge Sorted Array

一点小失误,基本一次过吧,这段程序不好,参考C#

 1 class Solution {

 2 public:

 3     void merge(int A[], int m, int B[], int n) {

 4         // Start typing your C/C++ solution below

 5         // DO NOT write int main() function

 6         vector<int> C(m);

 7         for (int i = 0; i < m; i++) C[i] = A[i];

 8         int p = 0;

 9         int q = 0;

10         int beg = 0;

11         while (p < m && q < n) {

12             A[beg++] = min(C[p], B[q]);

13             if (C[p] < B[q]) p++;

14             else q++;

15         }

16         if (p == m) {

17             for (int i = q; i < n; i++) A[beg++] = B[i];

18         }

19         if (q == n) {

20             for (int i = p; i < m; i++) A[beg++] = C[i];

21         }

22     }

23 };

 C#

 1 public class Solution {

 2     public void Merge(int[] nums1, int m, int[] nums2, int n) {

 3         for (int i = m+n-1; i >= 0; i--) {

 4             if (m == 0) nums1[i] = nums2[--n];

 5             else if (n == 0) break;

 6             else if (nums1[m-1] < nums2[n-1]) nums1[i] = nums2[--n];

 7             else nums1[i] = nums1[--m];

 8         }

 9     }

10 }
View Code

 

你可能感兴趣的:(LeetCode)