求解两数之和Python

问题:

输入整型数组,返回两元素的索引,使得这两个元素之和为特定的结果。假设这两个元素为不同元素。
例如: nums = [1,3,2,7] , target = 5
返回[1,2], 因为nums[1] + nums[2] = 3 + 2 = 5; 当没有符合元素时, 返回null

复制代码
def two_sum(li, target):
    dic = {}
    for index, val in enumerate(li):
        if target-val in dic:
            return [dic[target-val], index]
        else:
            dic[val] = index


if __name__ == '__main__':
    print(two_sum([1,3,2,7], 5))
复制代码

 后续v2版本:双指针法,前提是数组必须有序

复制代码
def two_sum_v2(li, target):
    left = 0
    right = len(li)-1
    while left <= right:
        sum = li[left] + li[right]
        if sum == target:
            return [left, right]
        elif sum < target:
            left += 1
        else:
            right -= 1
复制代码

 

posted @   今夜无风  阅读(240)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2020-04-24 问答系统实践(一):中文检索式问答机器人初探
2019-04-24 Facebook AI的工业级NLP开源框架—— Pytext
点击右上角即可分享
微信分享提示