Leetcode之两数之和

解法1:
def twoSum(nums, target):          #时间复杂度为n*log(n)
    T=[i for i in range(len(nums))]
    s_id = sorted(T,key=lambda k: nums[k])

    head = 0
    tail = len(nums) - 1
    sum_two= nums[s_id[head]] + nums[s_id[tail]]
    while sum_two != target:
        if sum_two > target:
            tail -= 1
        elif sum_two < target:
            head += 1
        sum_two = nums[s_id[head]] + nums[s_id[tail]]
    return [s_id[head], s_id[tail]]

解法2:哈希求解(时间复杂度最小)
 def twoSum(nums,target):
     hash={}
     for k,v in enumerate(nums):
         if target-v in hash:
             return [hash[target-v],k]
         else:
             hash[v]=k
     return []

解法3:暴力求解
 def twoSum(N,k):
     for i in range(len(N)):
         l=k-N[i]
         if l in N:
             t=N.index(l)
             if i == t:
                 continue
             else:
                 return [i,t]
                 break
         else:
             continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QG.7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值