合并两个有序数组——面试算法

题目:

// 88. 合并两个有序数组

// nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3

这题应该也可以用别的方法去做,例如快慢指针

我这里用了最简单的倒序比大小方法,挺高频的,面试问过好几次

package main

import "fmt"

func main() {
	nums1 := []int{1, 2, 3, 0, 0, 0}
	nums2 := []int{2, 5, 6}
	merge(nums1, 3, nums2, 3)
}

func merge(nums1 []int, m int, nums2 []int, n int) {
	// 倒序
	leng := len(nums1) - 1
	m--
	n--
	for m >= 0 && n >= 0 && leng >= 0 {
		if nums1[m] > nums2[n] {
			nums1[leng] = nums1[m]
			m--
			leng--
		} else {
			nums1[leng] = nums2[n]
			n--
			leng--
		}
	}
	if n >= 0 {
		nums1[leng] = nums2[n]
		n--
		leng--
	}
	if m >= 0 {
		nums1[leng] = nums1[m]
		m--
		leng--
	}
	fmt.Println(nums1)
}

全部评论

相关推荐

强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务