leetcode第一题two sum
2014-10-17 02:11
211 查看
太久不做算法。自己真是太渣。最开始用了一个最傻逼的O(N^2),两层for循环做出来beta1.0 。代码略之
一点价值都木有,leetcode直接报runtimie out错误。
真是一点思路都没有啊。想过排序,但是觉得排好序又回来找太麻烦。后来想到python有神奇enumerate,再转化成dict,不就可以一层循环搞定了么。结果,自己写到一半又卡在一次查找value值上面。像c++的模板map有find函数,能直接查找target-value1的值。遂doc之,查了dict确实没有这个函数。没忍住,上网百度,看别人的思路和代码。终于历经一点磨难,做出了beta2.0 。
(这段是错误代码,勿模仿)
自己运行。 哎,成功了。结果一拿上去,错了。当输入 [3, 2, 4]时,程序结果是1,1 显然不符合。
仔细一看最后糟糕了。当遍历的数字是target一半的时候中招,重复了。这好办呗,加一个判断条件就搞定啦。
运行。哈哈,accept了。
时间是 252ms,略渣。毕竟第一次嘛。咱过了就行!
后来再去看别人的思路,解法时,发现一个比我的更精简的代码。黏贴下来了哈。原文在此:传递门
一点价值都木有,leetcode直接报runtimie out错误。
真是一点思路都没有啊。想过排序,但是觉得排好序又回来找太麻烦。后来想到python有神奇enumerate,再转化成dict,不就可以一层循环搞定了么。结果,自己写到一半又卡在一次查找value值上面。像c++的模板map有find函数,能直接查找target-value1的值。遂doc之,查了dict确实没有这个函数。没忍住,上网百度,看别人的思路和代码。终于历经一点磨难,做出了beta2.0 。
(这段是错误代码,勿模仿)
class Solution: def twoSum(self, num, target): num_len = len(num) myDict = dict() for i in xrange(num_len): if not myDict.has_key(num[i]): myDict[num[i]] = i if myDict.has_key(target - num[i]): return (myDict.get(target - num[i]) + 1, i + 1) return None
自己运行。 哎,成功了。结果一拿上去,错了。当输入 [3, 2, 4]时,程序结果是1,1 显然不符合。
仔细一看最后糟糕了。当遍历的数字是target一半的时候中招,重复了。这好办呗,加一个判断条件就搞定啦。
<pre name="code" class="python">class Solution: def twoSum(self, num, target): num_len = len(num) myDict = dict() for i in xrange(num_len): if not myDict.has_key(num[i]): myDict[num[i]] = i if myDict.has_key(target - num[i]) and i != myDict.get(target - num[i]): #different return (myDict.get(target - num[i]) + 1, i + 1) return None
运行。哈哈,accept了。
时间是 252ms,略渣。毕竟第一次嘛。咱过了就行!
后来再去看别人的思路,解法时,发现一个比我的更精简的代码。黏贴下来了哈。原文在此:传递门
class Solution: # @return a tuple, (index1, index2) def twoSum(self, num, target): numMap = {} alen = len(num) array = [0, 0] for i in range(alen): if numMap.get(target - num[i]) != None: array[0] = numMap.get(target - num[i]) + 1 array[1] = i + 1; else: numMap[num[i]] = i return array想说,自己还是太弱了。继续努力吧。加油!少年!
相关文章推荐
- leetcode第一题--two sum
- LeetCode 第一题 Two Sum
- leetcode_java_第一题 two sum
- Leetcode第一题_Two Sum
- Leetcode 之第一题 two sum
- leetcode第一题(medium)——Two Sum
- LeetCode第一题Two Sum
- Leetcode第一题--------- Two Sum
- leetcode第一刷_Two sum
- 我的LeetCode第一弹 Leetcode: Two Sum
- LeetCode 第一题,Two Sum
- leetcode 第一题 two sum
- leetcode------第一题 Two Sum
- 算法分析与设计丨第一周丨 LeetCode(1)——Two Sum
- [LeetCode] Two Sum
- [leetcode 1] Two Sum
- Leetcode - Two Sum
- leetcode第一刷_Max Points on a Line
- leetcode_Two sum
- Leetcode-Two Sum