Wednesday, July 16, 2014

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 and n respectively.

初始化Index = m + n,从大到小开始merge。
public class Solution {
    //Time: O(m + n)  Space: O(1)
    public void merge(int A[], int m, int B[], int n) {
        int index = m + n;
        while (m > 0 || n > 0) {
            if (m == 0) {
                A[--index] = B[--n];
            } else if (n == 0) {
                return;
            } else {
                if (A[m - 1] > B[n - 1]) {
                    A[--index] = A[--m];
                } else {
                    A[--index] = B[--n];
                }
            }
        }
    }
}

No comments:

Post a Comment