Leetcode解题笔记 1.Two Sum [Easy]
来源:互联网 发布:八叉树算法详解 编辑:程序博客网 时间:2024/06/06 00:54
解题思路
本题属于leetcode简单题,题目要求找到能构成目标整形数的两个数字在vector里的位置,设定是必然能找到可匹配的两个数,所以不用做错误检测,而且只是两个数相加,所以只需要判断下每个数与target的差是否存在于vector中就可以了。
代码
我在代码里面用到了map,简化编程流程,一开始想得好复杂,想着会有多个数去相加,这样可能要用到树壮结构,但考虑到题目叫作two sum,两个数相加,所以其实并不需要往多个数相加去把问题复杂化。
第一次用leetcode,还自己写了个输入输出的测试,其实是多余的..
#include <iostream>#include <vector>#include <map>using namespace std;vector<int> twoSum(vector<int>& nums, int target) { vector<int> result; map<int, int> mymap; map<int, int>::iterator iter; for (int i = 0; i < nums.size(); i++) { int sub = target - nums[i]; iter = mymap.find(sub); if (iter != mymap.end()) { result.push_back(iter->second); result.push_back(i); break; } else { mymap.insert(pair<int, int>(nums[i], i)); } } return result;}int main(int argc, const char * argv[]) { vector<int> vec; int target; int n; cin >> n; int temp; for (int i = 0; i < n; i++) { cin >> temp; vec.push_back(temp); } cin >> target; vector<int> result = twoSum(vec, target); for (int i = 0; i < result.size(); i++) { cout << result[i] << ' '; } cout << endl; return 0;}
时间复杂度
O(n): 因为最多只会扫一次。
阅读全文
0 0
- Leetcode解题笔记 1.Two Sum [Easy]
- LeetCode解题报告 1. Two Sum[easy]
- leetcode 1. Two Sum [Easy]
- LeetCode 1. Two Sum (Easy)
- 【Leetcode】1.Two Sum 解题
- Leetcode[Easy] - Two Sum
- 【Leetcode】Two sum(easy)
- leetcode Two Sum easy
- Leetcode 1. Two Sum (Easy) (cpp)
- Leetcode 1. Two Sum (Easy) (java)
- Leetcode #1 Two Sum (easy)
- Leetcode #1 - Two Sum - Easy
- [leetcode] 1. Two Sum 解题报告
- LeetCode 1. Two Sum 解题报告
- LeetCode 1.Two Sum 解题报告
- LeetCode: 1. Two Sum【C 解题】
- 【LeetCode】1. Two Sum 解题报告
- LeetCode 1.Two Sum 解题报告
- MFC消息机制
- Hibernate多对一、多对多关系--cascade、inverse
- 在CSDN上如何快速转载博客
- iOS 证书申请和使用详解
- GBDT和XGBOOST的区别
- Leetcode解题笔记 1.Two Sum [Easy]
- 实现-超级课程表——校园登录(2)
- Maven阿里云仓库地址配置
- java--依赖、关联、聚合和组合之间区别的理解
- 什么是AAC音频格式 AAC-LC 和 AAC-HE的区别是什么
- 多线程的第三种实现方式
- inclue指令 jsp动作与jsp指令区别
- java单例模式
- 显示测量和土木工学12d.Model.v9.0.C1d地表