88. 合并两个有序数组

观察可知,\(\textit{nums}_1\) 的后半部分是空的,可以直接覆盖而不会影响结果。因此可以指针设置为从后向前遍历,每次取两者之中的较大者放进 \(\textit{nums}_1\) 的最后面。

/*
 * @lc app=leetcode.cn id=88 lang=java
 *
 * [88] 合并两个有序数组
 */

// @lc code=start
class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int index = m + n - 1;
        int i = m - 1, j = n - 1;
        while (i >= 0 && j >= 0) {
            nums1[index--] = (nums1[i] > nums2[j] ? nums1[i--] : nums2[j--]);
        }

        while (j >= 0) {
            nums1[index--] = nums2[j--];
        }
    }
}
// @lc code=end

posted @ 2021-09-11 19:00  Dazzling!  阅读(18)  评论(0编辑  收藏  举报