13.leetcode题目1: Two Sum
来源:互联网 发布:中国食品安全问题数据 编辑:程序博客网 时间:2024/05/02 00:41
又是好几天没刷题了,这几天零零碎碎的面试。。。
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
这个题拿到的第一眼反应就是:啊,不难嘛,不愧是第一题。。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
if(nums.empty())
return res;
//for(vector<int>::iterator iter=nums.begin();iter!=nums.end();++iter){
//for(vector<int>::iterator iter1=iter+1;iter1!=nums.end();++iter1){
// int sum=*iter+*iter1;
// if(sum==target){
// res.push_back(iter-nums.begin());
// res.push_back(iter1-nums.begin());
map<int, int> m;
for(int i = 0; i < nums.size(); ++ i){
if(m.find(target - nums[i]) != m.end()){
res.push_back(m[target - nums[i]] );
res.push_back(i);
break;
}
m[nums[i]] = i;
}
return res;
}
};
第一思路是按注释掉的方法,对所有元素进行一个循环的两两相加,判断是否与target相等。
最后肯定是正确的,但是时间复杂度为O(n^2),所以提交的时候超时了没通过~~
那么肯定要降低时间复杂度,这里我又参考了网络上别人做的,对map、hashmap等容器的用法都不太了解。
map<int,int> m;//这句话表示建立一个空map对象m,其索引值为int类型,键值为int类型,
在这道题中的方法是:索引值存放nums元素,键值存放nums元素的下标。
m.find(k),如果m容器中存在按k索引的元素,则返回指向该元素的迭代器。如果不存在,则返回超出末端迭代器。
m[target - nums[i]] 代表索引值target - nums[i]对应的键值。
以后注意:涉及到查找某元素,可用map!!!
- 13.leetcode题目1: Two Sum
- LeetCode题目:1. Two Sum
- 题目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》
- LeetCode | #1 Two Sum
- leetcode-1 Two Sum
- Two Sum | LeetCode(1)
- [Leetcode]1Two Sum
- leetcode 1 Two Sum
- 内存字节对齐
- Qt之QLabel
- hdoj-1251-tire树模板
- JavaScript对表单验证的例子
- thinkphp笔记
- 13.leetcode题目1: Two Sum
- OpenCV的轮廓查找和填充
- 不同apk之间数据共享
- EC笔记
- 计算机视觉Computer Vision领域博客资源
- hive日志分析
- Android 线程与线程池 Thread&ThreadPool
- Android Sqlite使用中注意事项
- ECNU_OJ_1073