題目:
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1and nums2 are m and n respectively.
注意題目Note部分說的nums1空間足夠,所以我們一開始可以就可以用個指針k指向nums1的下標m+n-1處,然後nums1和nums2都從最後一個往前比,誰大就把誰放在k指向的位置。如果是m先減到-1,還要把nums2的剩餘部分放到nums1上去,n先減到-1,就直接結束了。具體代碼如下:
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int k = m + n -1;
m -= 1;
n -= 1;
while(m >= 0 && n >= 0) {
if(nums1[m] > nums2[n]) {
nums1[k--] = nums1[m--];
} else {
nums1[k--] = nums2[n--];
}
}
while(n >= 0) {
nums1[k--] = nums2[n--];
}
}
}