# Given an array of integers, return indices of the two numbers # such that they add up to a specific target. # # You may assume that each input would have exactly one solution. # # Example: # Given nums = [2, 7, 11, 15], target = 9, # # Because nums[0] + nums[1] = 2 + 7 = 9, # return [0, 1].
classSolution(object): deftwoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ lookup = {} for i, num in enumerate(nums): if target - num in lookup: return [lookup[target - num], i] lookup[num] = i return []
deftwoSum2(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ k = 0 for i in nums: j = target - i k += 1 tmp_nums = nums[k:] if j in tmp_nums: return [k - 1, tmp_nums.index(j) + k]
if __name__ == '__main__': print Solution().twoSum((2, 7, 11, 15), 9) # -*- coding: utf-8 -*- import time defmain(a, b): # med = a[int(len(a)/2)] c=[-1, -1] for i, v in enumerate(a): for j,k in enumerate(a[i+1:]): c = [i, i+j+1] if v+k==b else c return c
defmain2(a, b): """ dict 存放查值 """ c = {} for i in range(len(a)): if b - a[i] in c: return [c[b-a[i]], i] c[a[i]] = i return [-1, -1]
defsum_number(a, b): """ dict 存放差值 """ if len(a) <= 1: returnFalse c = {} for i in range(len(a)): if a[i] in c: return [c[a[i]], i] else: c[b - a[i]] = i return [-1, -1]
defmain3(a, b): for i in range(len(a)): if (b - a[len(a)-i-1]) in a[:len(a)-i-1]: return [a.index((b - a[len(a)-i-1])),len(a)-i-1] return [-1, -1]
defmain4(a, b): try: # print [[a.index((b - a[len(a)-i-1])),len(a)-i-1] for i in range(len(a)) if (b - a[len(a)-i-1]) in a[:len(a)-i-1]] return [[a.index((b - a[len(a)-i-1])),len(a)-i-1] for i in range(len(a)) if (b - a[len(a)-i-1]) in a[:len(a)-i-1]][0] except: return [-1,-1]
defmain5(a, b): return [[a.index((b - a[len(a)-i-1])),len(a)-i-1] for i in range(len(a)) if (b - a[len(a)-i-1]) in a[:len(a)-i-1]].pop()
defmain6(a, b): return [[a.index(b-j), i] for i,j in enumerate(a) if a.count(b-j) > 0and a.index(b-j)!=i].pop()