【leetcode】two-sum
来源:互联网 发布:学生成绩系统c语言 编辑:程序博客网 时间:2024/06/15 16:34
题目:
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].
翻译:
给定一个整形数组和一个整数target,返回2个元素的下标,它们满足相加的和为target。
你可以假定每个输入,都会恰好有一个满足条件的返回结果。
代码一:暴力解法,时间复杂度为O(n^2)
vector<int> twoSum(vector<int> &numbers, int target) { int len=numbers.size(); vector<int> result; for(int i=0;i<len-1;i++) { for(int j=i+1;j<len;j++) { if((numbers[i]+numbers[j])==target) { result.push_back(i+1); result.push_back(j+1); break; } } } return result; }代码二,建立一个哈希表,依次读取数组中的每个数,对于一个数,如果(target-这个数)后能在哈希表里面找到,那么就能直接输出了,如果没有找到,那么我们把这个数存放在哈希表里面。整体下来,每个数其实在数组中就被查阅了一次,而在哈希表的查阅为O(1),因此总的时间复杂度为O(n)
vector<int> twoSum(vector<int> &numbers, int target) { int len=numbers.size(); map<int,int> index; vector<int> result; for(int i=0;i<len;i++) { if(index.find(target-numbers[i])==index.end())//没找到 { index.insert(pair<int,int>(numbers[i],i)); } else{//找到 result.push_back(i+1); result.push_back(index[target-numbers[i]]+1); break; } } sort(result.begin(),result.end());//因为插入顺序并不确定 return result; }
阅读全文
0 0
- 【Leetcode】Two Sum (Sum)
- LeetCode: Two Sum
- LeetCode: Two Sum
- [Leetcode] Two Sum
- LeetCode : Two Sum
- Leetcode: Two Sum
- leetcode 46: Two Sum
- [LeetCode] Two Sum
- LeetCode 1 - Two Sum
- Leetcode : Two Sum
- 【leetcode】Two Sum
- [LeetCode]Two Sum
- leetcode Two Sum
- [Leetcode] Two Sum
- [leetcode] Two Sum
- LeetCode - Two Sum
- leetcode之Two Sum
- LeetCode | Two Sum
- 智力题
- ELK在大数据运维中的应用
- 传智播客-Java学习笔记day24
- HDU4549 M斐波那契数列【矩阵快速幂】
- 在SAP Cloud Platform中的Fiori app中如何获得登陆用户名?
- 【leetcode】two-sum
- PHPStorm POST表单传输失败
- Math类 20170730
- C++实现软件自动更新功能
- 汇编编译器
- 逆向CrackMe-03写注册机
- 基于zookeeper分布式锁个人理解
- C#包含的文件
- HDU 1250