题目链接 : https://leetcode-cn.com/problems/merge-sorted-array/
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出:?[1,2,2,3,5,6]
一句话解释:用大的值填坑
详细解释:
我们比较两个数组的最大值依次填入!
其实这道题,可以用极端情况考虑,
例如:
nums1 = [4,5,6,0,0,0],nums2 = [1,2,3]
nums1 = [1,2,3,0,0,0],nums2 = [4,5,6]
就可以理解代码了!
python
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""
i = m - 1
j = n - 1
k = m + n - 1
while i >= 0 and j >= 0:
if nums1[i] > nums2[j]:
nums1[k] = nums1[i]
i -= 1
else:
nums1[k] = nums2[j]
j -= 1
k -= 1
while j >= 0:
nums1[k] = nums2[j]
k -= 1
j -= 1
java
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1;
int j = n - 1;
int k = m + n - 1;
while (i >= 0 && j >= 0) nums1[k--] = (nums1[i] > nums2[j]) ? nums1[i--]:nums2[j--];
while (j >= 0) nums1[k--] = nums2[j--];
}
}
原文:https://www.cnblogs.com/powercai/p/11012757.html