题目描述: 给定两个有序数组,合并它们,合并之后的数组依旧有序。
解题思路: 从后向前存放。
public void merge(int[] nums1, int m, int[] nums2, int n) {
if(nums1 == null || nums2 == null) return;
while(m > 0 && n > 0){
if(nums1[m - 1] >= nums2[n - 1]){
nums1[m + n - 1] = nums1[m - 1];
m--;
}else{
nums1[m + n - 1] = nums2[n - 1];
n--;
}
}
// 这一步可以省略
while(m > 0){
nums1[m - 1] = nums1[m - 1];
m--;
}
while(n > 0){
nums1[n - 1] = nums2[n - 1];
n--;
}
}