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