合并两个有序数组的golang实现
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
- 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
- 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
输入:
nums1 = [,,,,,], m =
nums2 = [,,], n = 输出: [,,,,,]
由题目中我们可以知道其实就是把nums1的前m项和nums2的前n项合并,并放进nums1中
因为nums1要变动,所以我们拷贝nums1到一个临时变量中
//把nums1复制到temp中
temp := make([]int, m)
copy(temp, nums1)
然后就是对比temp与nums2对应的值,比较哪个比较小,小的那个就插入nums1中
t, j := , //t为temp的索引,j为nums2的索引
for i := ; i < len(nums1); i++ {
//比较nums2与temp对应值的大小,小的那个就放进nums1中
if nums2[j] <= temp[t] {
nums1[i] = nums2[j]
j++
} else {
nums1[i] = temp[t]
t++
}
}
但是这样写,总有一个会先用完,当用完的时候,索引++会导致
index out of range
所以要改进一下代码,整体代码:
// 本题的要求是,把nums1的前m项和nums2的前n项合并,放入nums1中。
func merge(nums1 []int, m int, nums2 []int, n int) {
//把nums1复制到temp中
temp := make([]int, m)
copy(temp, nums1) t, j := , //t为temp的索引,j为nums2的索引
for i := ; i < len(nums1); i++ {
//当t大于temp的长度,那就是说temp全部放进去了nums1中,那剩下的就是放nums2剩余的值了
if t >= len(temp) {
nums1[i] = nums2[j]
j++
continue
}
//当j大于nums2的长度的时候,那就是说明nums2全部都放进去了nums1中,那剩下的就是放temp剩余的值了
if j >= n {
nums1[i] = temp[t]
t++
continue
}
//比较nums2与temp对应值的大小,小的那个就放进nums1中
if nums2[j] <= temp[t] {
nums1[i] = nums2[j]
j++
} else {
nums1[i] = temp[t]
t++
}
}
fmt.Println(nums1)
}
合并两个有序数组的golang实现的更多相关文章
- 合并两个有序数组a和b到c
问题:两个有序数组a和b,合并成一个有序数组c. // 合并两个有序数组a和b到c void Merge_Array(int a[], int n, int b[], int m, int c[]) ...
- leetcode-只出现一次的数字合并两个有序数组
题目:合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素 ...
- Leetcode#88. Merge Sorted Array(合并两个有序数组)
题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...
- 【leetcode-88,21】 合并两个有序数组/链表
合并两个有序数组 (easy,1过) 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nu ...
- python3实现合并两个有序数组
很早就听同学和师兄经常说刷题很重要,然而编程能力一直都很渣的我最近才开始从leetcode的初级算法开始.今天遇到的这道题虽然很简单,因为是头一次用自己的方法速度还不错,特此记录一下,还大神们请不要嘲 ...
- Leetcode 88 合并两个有序数组 Python
合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分 ...
- Leecode刷题之旅-C语言/python-88合并两个有序数组
/* * @lc app=leetcode.cn id=88 lang=c * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-s ...
- leetcode-88合并两个有序数组
合并两个有序数组 思路:利用索引合并两个列表,排序.注意不需要返回值,只修改nums1 class Solution: def merge(self, nums1: List[int], m: int ...
- 算法练习之x的平方根,爬楼梯,删除排序链表中的重复元素, 合并两个有序数组
1.x的平方根 java (1)直接使用函数 class Solution { public int mySqrt(int x) { int rs = 0; rs = (int)Math.sqrt(x ...
随机推荐
- Sklearn中二分类问题的交叉熵计算
二分类问题的交叉熵 在二分类问题中,损失函数(loss function)为交叉熵(cross entropy)损失函数.对于样本点(x,y)来说,y是真实的标签,在二分类问题中,其取值只可能为集 ...
- SpringBoot之前端文件管理
WebJars能使Maven的依赖管理支持OSS的JavaScript库/CSS库,比如jQuery.Bootstrap等. (1)添加js或者css库 pom.xml <dependency& ...
- UML 概述
UML统一建模语言 1997年OMG组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML).它目标 ...
- [angularjs] 前端路由实现单页跳转
代码: <div ng-app="Home"> <div ui-view></div> <div ng-controller=" ...
- 1.shell学习之常用语句
本章学习内容: 1.常见符号 2.命令分隔符-分号";" 3.双分号 ";;" 4. '单引号和"双引号 5.`反引号和$() 6.${}和$ 7.冒 ...
- 使用NetDrive将虚拟机映射到本地磁盘,使用smba映射本地磁盘(替代FileZilla)
使用NetDrive映射到本地磁盘 使用NetDrive软件来替代FileZilla,NetDrive是一个能把FTP空间虚拟成本地硬盘的软件,这样我们就不需要再使用FileZilla来来回拷贝文件了 ...
- 29.C++- 异常处理
C++内置了异常处理的语法元素 try catch try语句处理正常代码逻辑 当try语句发现异常时,则通过throw语句抛出异常,并退出try语句 catch语句处理异常情况 当throw语句抛出 ...
- 【MAC】安装神器brew
安装方法:命令行输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma ...
- Java基础IO流(四)序列化与反序列化
对象的序列化与反序列化: 对象的序列化,就是将Object转换成byte序列,反之叫对象的反序列化. 序列化流(ObjectOutInputStream),是过滤流 -------writeObjec ...
- Elasticsearch系列(2):安装Elasticsearch(Linux环境)
系统环境 操作系统:CentOS 6.9 Elasticsearch:6.2.2 Filebeat:6.2.2(收集IIS日志) Kibana:6.2.2 Java:Java 8 注意:elk最好选择 ...