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的长度索引
                }                
            }
        }
    }
}
相关推荐
Lei活在当下3 小时前
先用起来,再理解,关于协程Coroutine应该知道的事
android·java·jvm
Java爱好狂.4 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
tongluowan0074 小时前
以ReentrantLock为例解释AQS的工作流程
java·模板方法模式·aqs·reentrantlock
身如柳絮随风扬5 小时前
Java 项目打包与部署完全指南:JAR vs WAR,从构建到运行
java·firefox·jar
云烟成雨TD5 小时前
Spring AI Alibaba 1.x 系列【62】时光旅行(Time-Travel)
java·人工智能·spring
smj2302_796826526 小时前
解决leetcode第3943题递增后的数对数量
数据结构·python·算法·leetcode
浩少7026 小时前
【无标题】
java·开发语言
一棵白菜6 小时前
java 学习
java
卷毛的技术笔记6 小时前
Java后端硬核实战:用Spring AI Alibaba+Redis给LLM装上“超强记忆中枢”
java·人工智能·redis·后端·spring·ai·系统架构
炽烈小老头7 小时前
【每天学习一点算法 2026/05/25】矩阵中的最长递增路径
学习·算法·矩阵