go解题答案

  • 时间复杂度O(m+n)
  • 思路概括:双指针两两比较
  • 思路核心:
    1、从大到小,从后往前两两比较,大的赋值给原数组1
    func 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和微服务架构