Always keep a |

tujinh

园龄:1年粉丝:0关注:0

力扣88.合并两个有序数组

题目:

给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和 nums2中的元素数目。
请你合并nums2到nums 中,使合并后的数组同样按非递减顺序排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为m + n其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。


实现方法:

方法一:

直接将num2数组里的元素加入num1,调用sort.Ints函数进行排序

import "sort"
func merge(nums1 []int, m int, nums2 []int, n int) {
	j := 0
	for i := m; i < m+n; i++ {
		nums1[i] = nums2[j]
		j++

	}
	sort.Ints(nums1)

方法二:

用循环比较大小实现插入

func merge(nums1 []int, m int, nums2 []int, n int) {
	i := 0
	j := 0
	for j != n {
		if i == m {
			for a := i; a < len(nums1); a++ {
				nums1[a] = nums2[j]
				j++
			}
			return
		}
		if nums1[i] <= nums2[j] {
			i++
		} else {
			for a := m; a > i; a-- {
				nums1[a] = nums1[a-1]
			}
			nums1[i] = nums2[j]
			m++
			j++
			i++
		}
	}
}

本文作者:tjhzdsa

本文链接:https://www.cnblogs.com/tjhzdsa/p/18049739

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   tujinh  阅读(15)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起