美文网首页
2019-08-13 剑指 和为S的两个数字

2019-08-13 剑指 和为S的两个数字

作者: mztkenan | 来源:发表于2019-08-13 22:20 被阅读0次

11min,测试先行,线上一次通过
本地
1.死循环,tmp没有重新加
2.不含两个数字时报错,这时要保持 small<big

总的来说还可以,体现了测试样例先行的重要性

class Solution:
    def FindNumbersWithSum(self, array, sum):
        if len(array)<2:return []

        small,big=0,len(array)-1
        tmp=array[small]+array[big]
        while small<big:  #原来是tmp!=sum
            if tmp==sum:return [array[small],array[big]]
            if tmp<sum:small+=1
            else:big-=1
            tmp=array[small]+array[big] #死循环,tmp没有重新加
        return []

if __name__ == '__main__':
    t=Solution()
    print(t.FindNumbersWithSum([1,2,3,4],3))
    print(t.FindNumbersWithSum([-1,1,3,5],4))
    print(t.FindNumbersWithSum([-1,1,3,5],88))
    print(t.FindNumbersWithSum([1,2,5,6],7))
    print(t.FindNumbersWithSum([1,2],7))
    print(t.FindNumbersWithSum([],7))
    print(t.FindNumbersWithSum([],-5))

相关文章

网友评论

      本文标题:2019-08-13 剑指 和为S的两个数字

      本文链接:https://www.haomeiwen.com/subject/vzyijctx.html