[leetcode]1两数之和

从今天起每天做点leetcode上的题,这里的题最有意思的就是千奇百怪的测试数据往往需要思考非常全面才能A掉,挺锻炼思考力的。

这一题看起来非常简单,但是由于极大的数据量输入,导致超时问题。

本质上是一个考验搜索能力的题,提供的数组也是有序排列的,可以通过二分法,哈希法等进行搜索。

我解决这道题的时候选择python语言,通过python数组对象内置的index方法查找是否存在目标,如果存在就返回下标,不存在就通过异常处理解决分支。

 1 def twoSum(self, nums, target):
 2         """
 3         :type nums: List[int]
 4         :type target: int
 5         :rtype: List[int]
 6         """
 7         for x in range(len(nums)):
 8             y=target-nums[x]
 9             if y==nums[x]:
10                 nums.pop(x)
11                 try:
12                     z=nums.index(y)+1
13                 except:
14                     pass
15                 else:
16                     return x,z
17                 finally:
18                     nums.insert(x,y)
19             else:
20                 try:
21                     z=nums.index(y)
22                 except:
23                     pass
24                 else:
25                     return x,z
26         return
原文地址:https://www.cnblogs.com/trickofjoker/p/10536513.html