题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
一、暴力法
class Solution { public: void merge(int A[], int m, int B[], int n) { for(int i = m; i < m + n; i++){ A[i] = B[i-m]; } sort(A, A+m+n); } };
二、从后归并
class Solution { public: void merge(int A[], int m, int B[], int n) { int k = m + n - 1; int a_r = m - 1; int b_r = n - 1; while(a_r >= 0 && b_r >= 0){ if(A[a_r] > B[b_r]) A[k--] = A[a_r--]; else A[k--] = B[b_r--]; } while(a_r >= 0){ A[k--] = A[a_r--]; } while(b_r >= 0){ A[k--] = B[b_r--]; } } };