Merge Sorted Array
牛客网上面的思路已经很清晰了,这题只要从尾端开始比较就行
class Solution(object):
def merge(self, nums1, m, nums2, n):
"""
:type nums1: List[int]
:type m: int
:type nums2: List[int]
:type n: int
:rtype: void Do not return anything, modify nums1 in-place instead.
"""
leftCur, rightCur = m - 1, n - 1
curIndex = n + m - 1
while leftCur >= 0 and rightCur >= 0:
if nums1[leftCur] > nums2[rightCur]:
nums1[curIndex] = nums1[leftCur]
leftCur -= 1
else:
nums1[curIndex] = nums2[rightCur]
rightCur -= 1
curIndex -= 1
while leftCur >= 0:
nums1[curIndex] = nums1[leftCur]
leftCur -= 1
curIndex -= 1
while rightCur >= 0:
nums1[curIndex] = nums2[rightCur]
rightCur -= 1
curIndex -= 1
Java版本
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int curM = m - 1;
int curN = n - 1;
while (curM >= 0 && curN >= 0) {
if (nums1[curM] > nums2[curN]) {
nums1[curM + curN + 1] = nums1[curM];
curM--;
} else {
nums1[curM + curN + 1] = nums2[curN];
curN--;
}
}
while (curN >= 0) {
nums1[curN] = nums2[curN];
curN--;
}
}
}