LintCode Python 简单级题目 6.合并排序数组

原题描述:

 

合并两个排序的整数数组A和B变成一个新的数组。

 

样例

给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]

 

挑战 

你能否优化你的算法,如果其中一个数组很大而另一个数组很小?

 

 

题目分析:

 

合并两个排序的整数数组A和B变成一个新的数组。

 

 

源码:

class Solution:
    #@param A and B: sorted integer array A and B.
    #@return: A new sorted integer array
    def mergeSortedArray(self, A, B):
        # write your code here
        if A is None: return B
        if B is None: return A
        if len(A) > len(B):
            big,sma = A,B
        else:
            big,sma = B,A
        i = 0 
        while len(sma) > 0:
            n1 = sma[0]
            j = len(big)
            # i==j时,sma[0]元素已经比big[i-1]元素大,即big组最后一个元素
            # 执行insert会报索引超限,所以替换为使用append直到sma最后一个元素
            if i == j: 
                big.append(n1)
                sma.remove(sma[0])
            elif n1 <= big[i]: # sma[0]小于等于Big[i],在i位置插入,原Big[i]变为Big[i+1]
                big.insert(i,n1)
                sma.remove(sma[0])
            else: # sma[0]大于Big[i],继续查找Big下一个元素
                i += 1
        return big

 

转载于:https://www.cnblogs.com/bozhou/p/6957426.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值