当前位置: 首页 > article >正文

Leetcode—合并两个有序数组

题目描述

思路

     思路:创建三个指针,L1指向num1最后一个有效数据的位置,L2指向num2最后一个有效数据的位置,L3指向num1最后一个位置。比较L1和L2位置的数据,谁大,谁往L3的位置放数据。

画图解释

创建三个指针,L1指向num1最后一个有效数据的位置,L2指向num2最后一个有效数据的位置

L3指向num1最后一个位置

比较L1和L2位置的数据,谁大,谁往L3的位置放数据。

case1:L2先小于0(L2<0)不需要处理

 

上面是此题的一种情况,下面我们来看此题另一种情况

case2:L1先小于0,(L1<0)需要处理

综上,结束条件:要么L1<0,要么L2<0 

若L1先小于0,(L1<0)需要处理,要把num2中的数据循环放到num1;

若L2先小于0,则不要处理,因为此时num2中的数据已经有序的放到num1。

完整代码

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) 
{
    int L1=m-1;
    int L2=n-1;
    int L3=m+n-1;

    while(L1>=0&&L2>=0)
    {
        if(nums1[L1]>nums2[L2])
        {
            nums1[L3--]=nums1[L1--]; 
        }
        else
        {
           //要么L1==L2,要么L2>L1
           nums1[L3--]=nums2[L2--];
        }
    }
    //跳出while有两种情况:1.L1<0(需要处理); 2.L2<0(不需要处理)
    while(L2>=0)
    {
        nums1[L3--]=nums2[L2--];
    }
}


http://www.kler.cn/news/309810.html

相关文章:

  • 二叉搜索树(Java实现)
  • fastjson2 解决long类型带L尾缀的value
  • 【web前端】数组array、集合set、字典map、对象object、字符串string常见方法合集
  • 文件操作
  • OrionX GPU算力池助力AI OCR场景应用
  • git 更换远程地址的方法
  • [产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发
  • 传感技术是如何实现实时监测和控制的呢
  • Flume:大规模日志收集与数据传输的利器
  • JAVA_15
  • 兰花种类识别系统源码分享
  • 【渗透测试】——Upload靶场实战(1-5关)
  • 怎么使用nginx把80端口代理到想要的端口?
  • 中、美、德、日制造业理念差异
  • C++学习笔记(19)
  • vue3路由基本使用
  • 283. 移动零(快慢指针)
  • Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】
  • 零基础考过软考信息系统项目管理师经验分享
  • H5依赖安装
  • 一、(JS)JS中鼠标事件-mouseenter、mouseleave和mouseover、mouseout区别
  • 使用Redis实现用户关注博客的推模式
  • Go 交叉编译
  • Jenkins部署若依项目
  • 开源 AI 智能名片 S2B2C 商城小程序中的全渠道供应策略
  • 深度学习张量变换操作利器 einops 基础实践
  • 消息中间件有哪些常见类型
  • sql刷题常用函数
  • 微博计算架构实战
  • 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树