2024-03-26 09:15阅读: 7评论: 0推荐: 0

88.合并两个有序数组

image-20240325213329974

非递减顺序,即非严格递增序列

image-20240325214328241

自己没写出来

class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int tail1 = m-1;
int tail2 = n-1;
int tail = nums1.length - 1;
while(tail1 >= 0 && tail2 >= 0){ // 区别在这里
if(nums1[tail1] >= nums2[tail2]){
nums1[tail] = nums1[tail1];
tail1 --;
}else{
nums1[tail] = nums2[tail2];
tail2 --;
}
tail --;
}
}
}

修改

class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int tail1 = m-1;
int tail2 = n-1;
int tail = nums1.length - 1;
while(tail2 >= 0){ // 区别在这里
if(tail1 >= 0 && nums1[tail1] >= nums2[tail2]){ // 区别在这里
nums1[tail] = nums1[tail1];
tail1 --;
}else{
nums1[tail] = nums2[tail2];
tail2 --;
}
tail --;
}
}
}

要后判断,防止nums1数组的有效元素为0个的情况出现,错误示例

image-20240325222139147

吴师兄的

class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
// 索引从有序数组 nums1 有效元素的末端开始
// 数组的下标索引从零开始计数
// 索引 0 1 2
// 数组 [ 1 , 2 , 3 ]
int i = m - 1;
// 索引从有序数组 nums2 的末端开始
int j = n - 1;
// 从有序数组 nums1 最末端的位置开始保存元素
int cur = nums1.length - 1;
// 通过循环把 num2 的元素都移动到 num1 中
while( j >= 0 ){
// 比较 num1 和 num2 中当前的元素大小
// 如果 num1 中的索引位置为 i 的元素大于 num2 中索引位置为 j 的元素
// 为了防止越界 i 必须是大于等于 0
if( i >=0 && nums1[i] > nums2[j] ){
// 把 num1 中的索引位置为 i 的元素复制到索引为 cur 的位置
// 此时 cur 的元素已经确定下来
nums1[cur] = nums1[i];
// 接下来去确定 cur 前面一个元素应该放什么数字
cur--;
// 此时,索引 i 需要向前移动
i--;
// 否则,如果 num1 中的索引位置为 i 的元素小于或者等于 num2 中索引位置为 j 的元素
}else{
// 把 num2 中的索引位置为 j 的元素复制到索引为 cur 的位置
nums1[cur] = nums2[j];
// 接下来去确定 cur 前面一个元素应该放什么数字
cur--;
// 此时,索引 j 需要向前移动
j--;
}
}
}
}
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1;
int j = n - 1;
int cur = nums1.length - 1;
while( j >= 0 ){
if( i >=0 && nums1[i] > nums2[j] ){
nums1[cur] = nums1[i];
cur--;
i--;
}else{
nums1[cur] = nums2[j];
cur--;
j--;
}
}
}
}

本文作者:清澈的澈

本文链接:https://www.cnblogs.com/lmc7/p/18095865

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   清澈的澈  阅读(7)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示