LeetCode : 数组合并

题目描述


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 to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.


思路:这个关键可以想到从后往前走,比较方便,不需要开辟额外的空间

public class Solution {
    public void merge(int nums1[], int m, int nums2[], int n) {
        int i=m-1;
        int j=n-1;
        int index=m+n-1;
        while (i >= 0 && j >= 0)
            nums1[index--] = nums1[i] > nums2[j] ? nums1[i--] : nums2[j--]; 
        //因为最后要保存在nums1当中,所以如果B的全部插入到A中,A的顺序就不用管了
        while (j >= 0)
            nums1[index--] = nums2[j--];
        //这样的话,需要把B的再加到1里面
    }
}

你可能感兴趣的:(笔试题(java实现))