0
点赞
收藏
分享

微信扫一扫

Leetcode之两数之和

大自然在召唤 2022-05-06 阅读 108

解法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

举报

相关推荐

0 条评论