操操操

合并两个有序的数组golang版本

2023-08-20
1分钟阅读时长

合并两个有序的数组

func merge(nums1 []int, m int, nums2 []int, n int) {
	//max指向num1与num2合并之后的最后一个元素
	max := m + n - 1
	//指向num1最后一个元素
	i := m - 1
	//指向num2最后一个元素
	j := n - 1
	for i >= 0 && j >= 0 {
		//从右向左比较值的大小
		if nums1[i] > nums2[j] {
			nums1[max] = nums1[i]
			i--
		} else {
			nums1[max] = nums2[j]
			j--
		}
		//max向左移动
		max--
	}
	//如果i越界了,将nums2剩余的元素赋值到nums1的[0,m]之间
	for j >= 0 {
		nums1[max] = nums2[j]
		max--
		j--
	}
	for i >= 0 {
		nums1[max] = nums1[i]
		max--
		i--
	}
}
Avatar

Aisen

Be water,my friend.