首页 > 代码库 > [leetcode] Merge Sorted Array

[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