class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int[] res = new int[m + n];
int i = 0,j = 0;
while(i < m && j < n){
if(nums1[i] < nums2[j]){
res[i + j] = nums1[i++];
}else{
res[i + j] = nums2[j++];
}
}
while(i < m){
res[i + j] = nums1[i++];
}
while(j < n){
res[i + j] = nums2[j++];
}
for(int k = 0; k < m + n;k++){
nums1[k] = res[k];
}
}
}
逆向更方便,不用开辟额外的数组空间
优化合并有序数组:不使用额外空间
这篇博客介绍了一种在不额外开辟数组空间的情况下,合并两个有序数组的方法。通过双指针技术,直接在原数组`nums1`中进行合并操作,实现了空间复杂度为O(1)的解决方案。此方法适用于处理有序数据集合,减少了内存消耗,提高了效率。
676

被折叠的 条评论
为什么被折叠?



