思路是把nums2加到nums1里面,然后再对nums1的非0部分进行排序
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
for (int i = 0; i < n; i++) {
nums1[m] = nums2[i];
m++;
}
int temp = 0;
for (int i = 0; i < m; i++) {
for (int j = i; j < m; j++) {
if (nums1[i] > nums1[j]) {
temp = nums1[j];
nums1[j] = nums1[i];
nums1[i] = temp;
}
}
}
}
}
倒着逐个进行对比也是一种很好的思路,代码简单易读
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int p = m-- + n-- - 1;
while (m >= 0 && n >= 0) {
nums1[p--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
}
while (n >= 0) {
nums1[p--] = nums2[n--];
}
}