合并两个有序数组

  • 题目:给你两个按 非递减顺序 排列的整数数组 nums1nums2,另有两个整数 mn ,分别表示 nums1nums2 中的元素数目。

  • 请你 合并 nums2nums1 中,使合并后的数组同样按 非递减顺序 排列。

  • 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n

// 合并两个数组后再排序
func merge(nums1 []int, m int, nums2 []int, n int) {copy(nums1[m:], nums2)sort.Ints(nums1)
}
// 另开辟一个数组,双指针法排序两数组,最后再拷贝回 num1
func merge(nums1 []int, m int, nums2 []int, n int) {sort := make([]int, 0, m+n)i, j := 0, 0for {if i == m {sort = append(sort, nums2[j:]...)break}if j == n {sort = append(sort, nums1[i:]...)break}if nums1[i] < nums2[j] {sort = append(sort, nums1[i])i++} else {sort = append(sort, nums2[j])j++}}copy(nums1, sort)
}
// 逆双指针法,倒序从两个数组中找到较大的一个放入 num1 中
func merge(nums1 []int, m int, nums2 []int, n int) {i, j, tail := m-1, n-1, m+n-1for i >= 0 || j >= 0 {var cur intif i == -1 {cur = nums2[j]j--} else if j == -1 {cur = nums1[i]i--} else if nums1[i] < nums2[j] {cur = nums2[j]j--} else {cur = nums1[i]i--}nums1[tail] = curtail--}
}

合并两个有序数组 Go语言相关推荐

  1. LeetCode--88.合并两个有序数组(插入法,排序法)

    合并两个有序数组(C, Python) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python语言实现 1. 题目描述 难度:简单 2. 题目分析 这道题比较简单,实现方法有两种: 插入 ...

  2. LeetCode 21.23.剑指 Offer II 078. 合并两个有序链表 | C语言版

    LeetCode 21. 合并两个有序链表 | C语言版 LeetCode 21. 合并两个有序链表 题目描述 解题思路 思路一:使用栈 代码实现 运行结果 参考文章: 思路二:减少遍历节点数 代码实 ...

  3. 数组-合并两个有序数组(双指针,从后往前)

    题意: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 ...

  4. LeetCode-双指针-88. 合并两个有序数组

    88. 合并两个有序数组 思路:归并排序,一长一短,肯定会有一个先放完,放完后把另一个拷贝过去即可. 为了避免覆盖所以从最后开始向前放最大的元素 class Solution {public:void ...

  5. LeetCode 88合并两个有序数组89格雷编码

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  6. 合并两个无序数组java_88. 合并两个有序数组

    88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2的 ...

  7. 合并两个有序数组(双/三指针)

    今天写作业,合并两个有序数组a和b,时间复杂度要求O(n),空间复杂度要求O(1). 很快想到创建第三个数组c,用双指针初始化指向a和b的头元素,每次选择较大者在c上尾插进去之后,再后移相对应a或者b ...

  8. 双指针:88. 合并两个有序数组

    题目链接 88. 合并两个有序数组 解题思路 一. 合并数组后排序,时间复杂度为O((n+m)log(n+m)) 代码: 快排详解 class Solution {public void merge( ...

  9. LeetCode 88. 合并两个有序数组 golang

    88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...

  10. 88. 合并两个有序数组 golang

    88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...

最新文章

  1. python可视化来分析全国疫情
  2. 一文全面了解基于内容的推荐算法
  3. 数据流通实现“可用不可见”?腾讯巧夺“天工”
  4. 深度丨110亿美金还不够,阿里使用这种AI手段创造更多广告收入
  5. SSL 多线程通信 linux openSSL C API编程
  6. scrum回顾_[PM]敏捷开发之Scrum总结
  7. 解决 pycharm can not save setting
  8. mac下ssh报错:ssh_exchange_identification: read: Connection reset by peer
  9. java 串口判断报文完整_如何判断串口接收完成一帧数据
  10. 湖南高工计算机考试,湖南一工教育
  11. 李彦宏开年内部信:2018营收破千亿,做出好产品的百度已归来
  12. 产品开发版本的延续性
  13. Gprinter Android SDK V2.1 使用说明
  14. 组态软件android版,昆仑通态组态软件
  15. Windows系统与虚拟机共享文件夹,映射的磁盘显示“信号灯超时”
  16. Python中常用英文单词大全
  17. java拼音_Java获取汉字对应的拼音(全拼或首字母)
  18. Android Framework 音频子系统(01)音频基础知识
  19. 什么是SVG及使用方式
  20. iOS-UITableView 中自定制cell上UIButton互斥事件

热门文章

  1. 理正深基坑弹性计算方法_理正深基坑软件应用全参数说明书
  2. 8uftp,8uftp使用教程图解
  3. 下载百度文库的受限文件-冰点下载器
  4. linux环境下使用logrotate工具实现nginx日志切割
  5. rgb转yuv422 matlab,MATLAB读取一张RGB图片转成YUV420格式、YUV422格式、YUV444格式
  6. 模拟京东商城登陆HttpRequest
  7. 使用SVN将项目从服务器下载到本地
  8. 孪生网络keras实现minist
  9. 记录|深度学习100例-卷积神经网络(CNN)minist数字分类 | 第1天
  10. ubuntu搭建SVN客户端,右击提交或更新