合并两个有序数组 Go语言
合并两个有序数组
题目:给你两个按 非递减顺序 排列的整数数组
nums1
和nums2
,另有两个整数m
和n
,分别表示nums1
和nums2
中的元素数目。请你 合并
nums2
到nums1
中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组
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语言相关推荐
- LeetCode--88.合并两个有序数组(插入法,排序法)
合并两个有序数组(C, Python) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python语言实现 1. 题目描述 难度:简单 2. 题目分析 这道题比较简单,实现方法有两种: 插入 ...
- LeetCode 21.23.剑指 Offer II 078. 合并两个有序链表 | C语言版
LeetCode 21. 合并两个有序链表 | C语言版 LeetCode 21. 合并两个有序链表 题目描述 解题思路 思路一:使用栈 代码实现 运行结果 参考文章: 思路二:减少遍历节点数 代码实 ...
- 数组-合并两个有序数组(双指针,从后往前)
题意: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 ...
- LeetCode-双指针-88. 合并两个有序数组
88. 合并两个有序数组 思路:归并排序,一长一短,肯定会有一个先放完,放完后把另一个拷贝过去即可. 为了避免覆盖所以从最后开始向前放最大的元素 class Solution {public:void ...
- LeetCode 88合并两个有序数组89格雷编码
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
- 合并两个无序数组java_88. 合并两个有序数组
88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2的 ...
- 合并两个有序数组(双/三指针)
今天写作业,合并两个有序数组a和b,时间复杂度要求O(n),空间复杂度要求O(1). 很快想到创建第三个数组c,用双指针初始化指向a和b的头元素,每次选择较大者在c上尾插进去之后,再后移相对应a或者b ...
- 双指针:88. 合并两个有序数组
题目链接 88. 合并两个有序数组 解题思路 一. 合并数组后排序,时间复杂度为O((n+m)log(n+m)) 代码: 快排详解 class Solution {public void merge( ...
- LeetCode 88. 合并两个有序数组 golang
88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...
- 88. 合并两个有序数组 golang
88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...
最新文章
- python可视化来分析全国疫情
- 一文全面了解基于内容的推荐算法
- 数据流通实现“可用不可见”?腾讯巧夺“天工”
- 深度丨110亿美金还不够,阿里使用这种AI手段创造更多广告收入
- SSL 多线程通信 linux openSSL C API编程
- scrum回顾_[PM]敏捷开发之Scrum总结
- 解决 pycharm can not save setting
- mac下ssh报错:ssh_exchange_identification: read: Connection reset by peer
- java 串口判断报文完整_如何判断串口接收完成一帧数据
- 湖南高工计算机考试,湖南一工教育
- 李彦宏开年内部信:2018营收破千亿,做出好产品的百度已归来
- 产品开发版本的延续性
- Gprinter Android SDK V2.1 使用说明
- 组态软件android版,昆仑通态组态软件
- Windows系统与虚拟机共享文件夹,映射的磁盘显示“信号灯超时”
- Python中常用英文单词大全
- java拼音_Java获取汉字对应的拼音(全拼或首字母)
- Android Framework 音频子系统(01)音频基础知识
- 什么是SVG及使用方式
- iOS-UITableView 中自定制cell上UIButton互斥事件
热门文章
- 理正深基坑弹性计算方法_理正深基坑软件应用全参数说明书
- 8uftp,8uftp使用教程图解
- 下载百度文库的受限文件-冰点下载器
- linux环境下使用logrotate工具实现nginx日志切割
- rgb转yuv422 matlab,MATLAB读取一张RGB图片转成YUV420格式、YUV422格式、YUV444格式
- 模拟京东商城登陆HttpRequest
- 使用SVN将项目从服务器下载到本地
- 孪生网络keras实现minist
- 记录|深度学习100例-卷积神经网络(CNN)minist数字分类 | 第1天
- ubuntu搭建SVN客户端,右击提交或更新