leetcode(1)_Two Sum
来源:互联网 发布:淘宝一个差评多少钱 编辑:程序博客网 时间:2024/06/05 19:52
题目
1. 我的解答
class Solution(object): def twoSum(self, nums, target): maps = {} for i in range(len(nums)): maps.update({str(i):nums[i]}) def getIndex(values): assert len(values) == 2 print(values) if values[0] == values[1]: indexes = [i for i ,a in enumerate(maps.values()) if a == values[0]] return sorted([int(maps.keys()[indexes[0]]), int(maps.keys()[indexes[1]])]) else: index0 = maps.keys()[maps.values().index(values[0])] index1 = maps.keys()[maps.values().index(values[1])] return sorted([int(index0), int(index1)]) sort_nums = sorted(nums) nums_small = [x for x in sort_nums if x <= target - sort_nums[0]] nums_middle = [x for x in nums_small if x == target/2] if len(nums_middle) == 2 and nums_middle[0] + nums_middle[1] == target: return getIndex(nums_middle) nums_left = [x for x in nums_small if x < target/2] nums_right = [x for x in nums_small if x > target/2] print("l:", nums_left) print("r:", nums_right) for l in nums_left: result = [r for r in nums_right if l+r == target] if len(result) == 1: result = getIndex([l, target-l]) return result return None
2. 大神的代码
大神写的
class Solution(object): def twoSum(self, nums, target): nums_dict = dict() for i, v in enumerate(nums): if v not in nums_dict: nums_dict[v] = i if target - v in nums_dict: k = nums_dict[target - v] if k < i: return [k, i]
我的思路是,先保存索引,再排序,然后对半查找,对于6=3+3的情况,需要单独判断。
大神的思路是,在建立索引的时候,同时判断,而且是利用target-v是否在dict的方式,而不是两次遍历求和判断。
3. 差距
- 尽量避免重复多个循环,能同时做的事情,绝不分开做。
- 当要进行某种遍历时,要选择遍历变量的所在集合尽可能小的方法遍历。
阅读全文
0 0
- leetcode(1)_Two Sum
- LeetCode 1_Two Sum
- leetcode(1)_two sum
- leetcode(1)_Two Sum
- LeetCode之1_Two Sum
- LeetCode学习_Two Sum
- leetcode第一刷_Two sum
- Leetcode第一题_Two Sum
- LeetCode 001_Two Sum Java
- LeetCode刷题心得系列(一)_TWO SUM
- 0001_Two Sum
- LeetCode 1 - Two Sum
- leetcode 1 Two Sum
- Leetcode【1】:Two Sum
- [leetcode 1] Two Sum
- 【leetcode-1】Two Sum
- [leetcode 1] Two Sum
- [Leetcode] 1 - Two Sum
- C++搜索与回溯算法之Lake Counting(数湖)
- PAT乙级 1066. 图像过滤(15)
- 能不用电视显示器接电脑就不用电视显示器接电脑
- git常用命令
- 论思想之造化
- leetcode(1)_Two Sum
- 算法导论<学习笔记> 第一章 算法在计算中的作用
- 13.4. A Copy-Control Example
- 有关献血过程中的一些问题
- xss跨站脚本攻击、csrf跨站请求伪造
- 用媒体查询实现web响应式开发小记
- [莫比乌斯反演+分块求和] BZOJ2820: YY的GCD
- Please use the /MD switch for _AFXDLL builds
- 类型别名的一些问题