LeetCode 88 合并两个有序数组

该题注意点有:

1、确定是否需要break以及何时break;

break和break one还有return的区别可以参考这篇

break和return-CSDN博客

2、对于m=0的特殊情况需要特殊处理

3、这道题其实是插入排序的方法,当插入中间和尾部其实是不一样的处理,需要分情况

java 复制代码
class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        if(m==0) {
            for(int i=0;i<n;i++) {
                nums1[i] = nums2[i];
            }
        }
        for(int i=0;i<n;i++) {
            for(int j=0;j<m;j++) {
                if(nums2[i]<nums1[j]) {
                    for(int z=m;z>j;z--) {
                        nums1[z] = nums1[z-1];
                    }
                    nums1[j] = nums2[i];
                    m++; 
                    break;
                }
                if(j == m-1) {
                   nums1[j+1] = nums2[i];
                   m++;
                   break;   //注释掉break会导致一直处于i=0的第一层外循环,内循环的m一直在变,
                            //最终超出nums1的长度索引
                }                
            }
        }
    }
}
相关推荐
阿维的博客日记8 小时前
怎么用ThreadLocal解决用户的登录上下文
java·juc
gaosushexiangji9 小时前
DIC系统推荐:基于千眼狼三维数字图像相关的无人机旋翼疲劳试验全场应变与位移测量
人工智能·算法
Dicky-_-zhang9 小时前
容器编排实战:Docker与Kubernetes对比选型与落地实践
java·jvm
benpaodeDD9 小时前
视频10,11,12,13——java程序的加载与执行,安装jdk
java·开发语言
数字化顾问9 小时前
(122页PPT)数字化架构的演进和治理(附下载方式)
java·运维·架构
XiYang-DING9 小时前
【Java SE】JVM
java·开发语言·jvm
小陶来咯10 小时前
小智接入懒人说书MCP
java·开发语言
Dicky-_-zhang10 小时前
日志管理实战:ELK与Loki对比选型与落地实践
java·jvm
nJI74egg110 小时前
JavaEE初阶---《JUC 并发编程完全指南:组件用法、原理剖析与面试应答》
java·面试·java-ee
刮风那天10 小时前
Android AMS创建进程不用Binder而用Socket?
android·java·binder