88. Merge Sorted Array

Problem from leetcode 88. Merge Sorted Arrayy


这道题很简单,只要从后往前填充resulting array。


class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int point1 = m-1;
        int point2 = n-1;
        int point = m+n-1;
        while(point1 >= 0 && point2 >= 0)
        {
            if(nums2[point2] > nums1[point1])
                nums1[point--] = nums2[point2--];
            else
                nums1[point--] = nums1[point1--];
        }
        while(point2 >= 0)
            nums1[point--] = nums2[point2--];
    }
};

Java:

public class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int point1 = m-1;
        int point2 = n-1;
        int point = m+n-1;
        while(point1 >= 0 && point2 >= 0)
        {
            if(nums2[point2] > nums1[point1])
                nums1[point--] = nums2[point2--];
            else
                nums1[point--] = nums1[point1--];
        }
        while(point2 >= 0)
            nums1[point--] = nums2[point2--];
    }
}

Python:

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.
        """
        p1, p2, p = m-1, n-1, m+n-1
        while p1 >= 0 and p2 >= 0:
            if nums1[p1] > nums2[p2]:
                nums1[p] = nums1[p1]
                p -= 1
                p1 -= 1
            else:
                nums1[p] = nums2[p2]
                p -= 1
                p2 -= 1
        while p2 >= 0:
            nums1[p] = nums2[p2]
            p -= 1
            p2 -= 1

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.