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--;
        }
    }
}

results matching ""

    No results matching ""