[leetcode] Merge Sorted Array

Given two sorted integer arrays A and B, merge B into A as one sorted array.

Note:
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 andn respectively.

https://oj.leetcode.com/problems/merge-sorted-array/

 

思路:这题的技巧是从后面开始merge。

 

/**
 * http://blog.csdn.net/havenoidea/article/details/12033023
 */
public class Solution {
    public void merge(int A[], int m, int B[], int n) {
        if (m < 0 || n < 0)
            return;
        int i = m - 1;
        int j = n - 1;
        int p = m + n - 1;
        while (i >= 0 && j >= 0) {
            if (A[i] > B[j]) {
                A[p--] = A[i--];
            } else {
                A[p--] = B[j--];
            }
        }
        if (j >= 0) {
            while (j >= 0)
                A[p--] = B[j--];
        }

    }

    public static void main(String[] args) {
        int[] a = new int[] { 1, 2, 0, 0, 0, 0 };
        int m = 2;
        int[] b = new int[] { 1, 3, 5 };
        int n = 3;
        new Solution().merge(a, m, b, n);
    }

}
View Code

 

第二遍记录:

  从后向前遍历。

posted @ 2014-07-01 22:23  jdflyfly  阅读(120)  评论(0编辑  收藏  举报