lintcode 训练笔记 题目:合并两个有序升序的整数数组

1.题目:合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。
思路:相当于两指针,分别指向两数组头,开始比较,小的数就存入空数组res,直到其中一个指针指向数组末尾,也就是 n>A数组的长度,既可以将剩下的B数组直接存入res,或者m>B数组的长度,就将剩余的A直接存入res
代码:

def getall(A,B):

def getall(A,B):
    n=0
    m=0
    res=[]
    for i in range(len(A)+len(B)):
        #print(i)
        if n>=len(A):
            res.append(B[m])
            #print("1:",res)
            m = m+1
            #注意判断完是否超出数组长度要用continue跳出循环,不然会继续判断下面A[n]和B[m]大小,此时若n超出数组长度则会报错list index out of range
            continue
        if m>=len(B):
            res.append(A[n])
            #print("2:",res)
            n = n+1 
            continue
        if A[n]<=B[m]:
            res.append(A[n])
            n=n+1
            #print("3:",res)
        else:
            res.append(B[m])
            m=m+1
            #print("4:",res)
        i = i+1
    return res
print(getall([1,2,3,4,5],[1,2,5,6,8,]))

如果想合并判断语句写成 if (m>len(B) or A[n]<B[m]) and n<len(A):
也会报错list index out of range,因为跟前面不加continue跳出循环一样,or先判断m>len(B),再判断A[n]<B[m],这时当m>len(B)为真时,B[m]就超出数组范围
当然如果使用numpy库就更简单了,直接合并两个数组,然后进行排序

    import numpy 
    class Solution:
    def mergeSortedArray(self, A, B):
        for i in range(len(B)):
            A.append(B[i])
            print(A)
            i = i+1
        #return A
        c = numpy.sort(A)
        c = list(c)
        return c
	q = Solution()        

    print(q.mergeSortedArray([1,2,3],[1,2,4,6,8]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值