leetcode 1-Two Sum
来源:互联网 发布:mac txt阅读器 编辑:程序博客网 时间:2024/06/04 00:35
题目链接:
两种思路:
思路一:
1. 排序
2. 从两边同时开始找满足target的两个数。
《代码改天写》
思路二:
1. 利用Map查找元素的时间为O(1)的特性来搞
网上普遍的做法,击败了27%的C++ submission:
class Solution {public: vector<int> twoSum(vector<int> &nums, int target) { vector<int> result; map<int,int> hmap; for(int i=0;i<nums.size();++i){ if (!hmap.count(nums[i])){ hmap.insert(make_pair(nums[i], i)); } if (hmap.count(target-nums[i])) { int n=hmap[target-nums[i]]; if(n<i){ result.push_back(n); result.push_back(i); return result; } } } return result; }};
我自己改进后的做法,可以击败45%的C++ submission:
主要感觉之前网上的做法对于判断一个数是否在map里这一点是没有必要的,
同时我们可以先直接用target做差判断一个数是否在map里,再去添加一个新的map,
这样就省去了判断n<i(这一点)
class Solution {public: vector<int> twoSum(vector<int> &nums, int target) { vector<int> result; map<int,int> hmap; int size=nums.size(); for(int i=0;i<size;++i){ if (hmap.count(target-nums[i])) { result.push_back(hmap[target-nums[i]]); result.push_back(i); return result; } hmap.insert(make_pair(nums[i], i)); } return result; }};
0 0
- 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
- LeetCode (1) Two Sum
- LeetCode 1:《Two Sum》
- LeetCode | #1 Two Sum
- leetcode-1 Two Sum
- Two Sum | LeetCode(1)
- [Leetcode]1Two Sum
- leetcode 1 Two Sum
- leetcode #1 Two Sum
- leetcode 1:Two Sum
- LeetCode 1 Two Sum
- leetcode #1 two sum
- linux 知识
- 如何查看自己电脑的IP和MAC
- 设计模式(十五)组合模式
- 剑指offer:和为S的连续正数序列
- 不用求值器绘制双二次及双三次Bezier曲面
- leetcode 1-Two Sum
- iOS程序启动内部过程(从点击图标到显示界面)
- HDU-ACM2023
- JAVA技术发展——你不知道的J2SE(三)
- mysql 默认引擎innodb 初探(一)
- Python 文件及文件夹操作记录
- js的Date对象
- HDU-ACM2024
- Spring NamedParameterJdbcTemplate 详解