GO题解 | #合并两个有序的数组#
来自
【GO题解】
642 浏览
0 回复
2021-05-08
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
go解题答案
- 时间复杂度O(m+n)
- 思路概括:双指针两两比较
- 思路核心:
1、从大到小,从后往前两两比较,大的赋值给原数组1func merge( A []int , m int, B []int, n int ) {
// write code here
if len(A)==0 &&len(B)==0{
return
}
// 从后往前两两比较,大的赋值
for m!=0&&n!=0{
if A[m-1]<B[n-1]{
A[m+n-1] = B[n-1] // 大的赋值
n-- // 指针移动
}else {
A[m+n-1] = A[m-1]
m--
}
}
// 只考虑B数组剩余的情况,也就是n指针,因为A数组是整合后的数组
for n>0 {
A[n-1]=B[n-1]
n--
}
}
如果有帮助请点个赞哦, 更多文章请看我的博客
题主背景
- 从业8年——超级内卷500Q技术经理——目前专注go和微服务架构