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

题目:

// 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)
}

全部评论

相关推荐

2024-12-23 10:55
已编辑
大连理工大学 Java
牛客930504082号:华子综测不好好填会挂的,而且填的时候要偏向牛马选项
点赞 评论 收藏
分享
暮雨轻歌:看起来hr不能接受我菜查看图片
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务