LeetCode:Merge Sorted Array

来源:互联网 发布:傲剑升级数据大全2014 编辑:程序博客网 时间:2024/05/21 06:03

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
原创粉丝点击