给定两个有序整数数组 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实现的更多相关文章

  1. 合并两个有序数组a和b到c

    问题:两个有序数组a和b,合并成一个有序数组c. // 合并两个有序数组a和b到c void Merge_Array(int a[], int n, int b[], int m, int c[]) ...

  2. leetcode-只出现一次的数字合并两个有序数组

    题目:合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素 ...

  3. Leetcode#88. Merge Sorted Array(合并两个有序数组)

    题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  4. 【leetcode-88,21】 合并两个有序数组/链表

    合并两个有序数组 (easy,1过) 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nu ...

  5. python3实现合并两个有序数组

    很早就听同学和师兄经常说刷题很重要,然而编程能力一直都很渣的我最近才开始从leetcode的初级算法开始.今天遇到的这道题虽然很简单,因为是头一次用自己的方法速度还不错,特此记录一下,还大神们请不要嘲 ...

  6. Leetcode 88 合并两个有序数组 Python

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

  7. Leecode刷题之旅-C语言/python-88合并两个有序数组

    /* * @lc app=leetcode.cn id=88 lang=c * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-s ...

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

    合并两个有序数组 思路:利用索引合并两个列表,排序.注意不需要返回值,只修改nums1 class Solution: def merge(self, nums1: List[int], m: int ...

  9. 算法练习之x的平方根,爬楼梯,删除排序链表中的重复元素, 合并两个有序数组

    1.x的平方根 java (1)直接使用函数 class Solution { public int mySqrt(int x) { int rs = 0; rs = (int)Math.sqrt(x ...

随机推荐

  1. Sklearn中二分类问题的交叉熵计算

    二分类问题的交叉熵   在二分类问题中,损失函数(loss function)为交叉熵(cross entropy)损失函数.对于样本点(x,y)来说,y是真实的标签,在二分类问题中,其取值只可能为集 ...

  2. SpringBoot之前端文件管理

    WebJars能使Maven的依赖管理支持OSS的JavaScript库/CSS库,比如jQuery.Bootstrap等. (1)添加js或者css库 pom.xml <dependency& ...

  3. UML 概述

    UML统一建模语言      1997年OMG组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML).它目标 ...

  4. [angularjs] 前端路由实现单页跳转

    代码: <div ng-app="Home"> <div ui-view></div> <div ng-controller=" ...

  5. 1.shell学习之常用语句

    本章学习内容: 1.常见符号 2.命令分隔符-分号";" 3.双分号 ";;" 4. '单引号和"双引号 5.`反引号和$() 6.${}和$ 7.冒 ...

  6. 使用NetDrive将虚拟机映射到本地磁盘,使用smba映射本地磁盘(替代FileZilla)

    使用NetDrive映射到本地磁盘 使用NetDrive软件来替代FileZilla,NetDrive是一个能把FTP空间虚拟成本地硬盘的软件,这样我们就不需要再使用FileZilla来来回拷贝文件了 ...

  7. 29.C++- 异常处理

    C++内置了异常处理的语法元素 try catch try语句处理正常代码逻辑 当try语句发现异常时,则通过throw语句抛出异常,并退出try语句 catch语句处理异常情况 当throw语句抛出 ...

  8. 【MAC】安装神器brew

    安装方法:命令行输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma ...

  9. Java基础IO流(四)序列化与反序列化

    对象的序列化与反序列化: 对象的序列化,就是将Object转换成byte序列,反之叫对象的反序列化. 序列化流(ObjectOutInputStream),是过滤流 -------writeObjec ...

  10. Elasticsearch系列(2):安装Elasticsearch(Linux环境)

    系统环境 操作系统:CentOS 6.9 Elasticsearch:6.2.2 Filebeat:6.2.2(收集IIS日志) Kibana:6.2.2 Java:Java 8 注意:elk最好选择 ...