LeetCode:Merge Sorted Array

You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.

这题目很坑,如果A是[]的话,实际上是[0]但是m=0


class Solution:
    # @param A  a list of integers
    # @param m  an integer, length of A
    # @param B  a list of integers
    # @param n  an integer, length of B
    # @return nothing
    def merge(self, A, m, B, n):
        if m==0:
            for i in range(n):#如果m=0的话,说明A是空,所以把B的值一个一个赋给A,不能A=B不然输出不正确。。。
                A[i]=B[i]
            return
        elif n!=0:#如果B非空,B是空的话,就不用计算了
            curA=m-1            
            curB=n-1
            cur=m+n-1
            while (cur>=0):#指向混合后数组最后一个,向前一个一个赋值
                if curA>=0:#如果curA变负数了,说明A的已经全部结束,这时要把B剩下的值放到最前面去                    
                    if B[curB]>=A[curA]:
                        A[cur]=B[curB]
                        curB-=1
                        if curB<0:如果curB变负数了,说明B的值全放到A里面去了,则自然结束
                            return
                        cur-=1                        
                    else:
                        A[cur]=A[curA]
                        curA-=1
                        cur-=1                        
                else:
                    A[cur]=B[curB]#如果curA变负数了,说明A的以及全部结束,这时要把B剩下的值放到最前面去
                    curB-=1
                    cur-=1
            return
            


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值