地址:https://leetcode.com/problems/two-sum/
题意:
给定一个数组和一个target, 如果数组中有两个数的和恰好等于target, 返回它们的下标.
题解:
思路有很多, 随便搞一搞就可以 比如: 先排序, 然后遍历每一个数, 二分查找另一个 因为python自带字典树(dist), 所以这里给出更方便的这种做法:
先按照 d = { 值 : 下标 } 建树, 然后遍历每一个数, 直接查找另一个, 返回这两个数的下标即可
代码:
1 class Solution(object): 2 def twoSum(self, nums, target): 3 """ 4 :type nums: List[int] 5 :type target: int 6 :rtype: List[int] 7 """ 8 lena = len(nums) 9 d = { 0x3fffffff: 0x3fffffff } 10 for i in range(lena): 11 d[nums[i]] = i 12 13 for i in range(lena): 14 temp = target - nums[i] 15 if temp in d: 16 if d[temp] != i: 17 return [i, d[temp]]
原文:http://www.cnblogs.com/hexsix/p/6384135.html