菜鸟刷题路(随缘刷题):leetcode88

lc88

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int i = m - 1, j = n - 1;
        int p = m + n - 1;
        while(i >= 0 && j >= 0){
            nums1[p--] = nums1[i] > nums2[j] ? nums1[i--] : nums2[j--];
        }
        if(j >= 0){
            for (int k = j; k >= 0; k--){
                nums1[k] = nums2[k];
            }
        }
    }
}

思路:因为题目返回的是num1,先将两个指针分别指向m-1,n-1,再比较之,然后大的放到num1后面,如果有一个数组遍历完了,查看num2是否已经遍历完,如果还未遍历完,将它加到num1前面相应的位置(因为此时num2中的元素都是最小且有序的)。

原文地址:https://www.cnblogs.com/kylinxxx/p/14009434.html