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

leetcode-88-合并两个有序数组

题解:

解法一:从后向前同时遍历两个数组,因为nums1后面是0,从后遍历节省空间。

1、定义三个指针,分别为:len1=m-1指向nums1的最后一个非0数字;len2=n-1指向nums2的最后一个数字;len3=m+n-1指向nums的最后一个位置。

2、当len1与len2都大于等于0时即nums1与nums2都没有遍历完时:

(1)如果nums2[len2]>nums1[len1],则将nums2[len2]移动到nums1[len3]的位置并使len2向前移动1即len2--;

(2)如果nums2[len2]<=nums1[len1],则将nums1[len1]移动到nums1[len3]的位置并使len3向前移动1即len1--;

(3)无论执行(1)还是(2)都需要将len3向前移动1位;

3、执行完2中的while循环时,当len2<0则代表nums2先遍历完成即nums2中的元素已经完全并入nums1即已完成题目要求;当len1<0则代表nums1先遍历完成但nums2中仍有元素存在即nums2中剩余的元素小于nums1[0],此时则需要将nums[0:len2+1]赋值给nums1[0:len2+1]。

解法二:将数组nums2赋值给nums1[m:],用nums1.sort()排序。(面试官不希望用此法解题)

代码:

解法一:空间复杂度O(1),时间复杂度O(m+n)

解法二:


http://www.kler.cn/a/376324.html

相关文章:

  • linux查看系统架构的命令
  • CDN加速实战:使用七牛云CDN加速阿里云OSS资源访问
  • Window系统性能调优
  • 网络:IP分片和组装
  • linux alsa-lib snd_pcm_open函数源码分析(三)
  • 老电脑不能装纯净版windows
  • 江协科技STM32学习- P33 实验-软件I2C读写MPU6050
  • 【攻防实战】手把手带你打穿某集团内网(上)
  • RTX5/FreeRTOS全家桶源码工程综合实战模板集成CANopen组件(2024-10-30)
  • IT界的大神-003- 史蒂夫·乔布斯 (Steve Jobs)
  • 字体反爬 fontTools | ddddocr
  • 高德地图如何标注店铺名称和位置信息?
  • timm使用笔记
  • 20221403郑骁恒第八周预习报告
  • 基于单片机的智能婴儿监控系统设计(论文+源码)
  • Istio基本概念及部署
  • Vue Router 中 router、route 和 routes 的区别 - 2024最新版前端秋招面试短期突击面试题【100道】
  • 深度学习速通系列:如何使用bert进行超长中文文本命名实体识别
  • Jupyter lab 打开时默认使用 Notebook 而不是浏览器
  • springboot-starter 整合feignClient
  • 方差与协方差
  • 【销帮帮-注册/登录安全分析报告-试用页面存在安全隐患】
  • C++学习大纲
  • vue和django接口联调
  • Go Modules和 雅典项目
  • C++ ----------- 栈和队列