1. Two Sum
来源:互联网 发布:mr在lte网络优化 编辑:程序博客网 时间:2024/05/01 02:40
题目:
https://leetcode.com/problems/two-sum/
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.
1. 最直接实现,冒泡法,两两相加。(算法复杂度o(n*n)不能通过)
c++实现方法
vector<int> twoSum(vector<int>& vec, int target) { vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++){ vector<int>::iterator it2; for(it2=it+1;it2!=vec.end();it2++){ if(*it + *it2 == target){ vector<int> re; re.push_back(it-vec.begin()); re.push_back(it2-vec.begin()); return re; } } } return vector<int>(); }
2. 使用map实现,算法复杂度o(n*logn)
C++实现
vector<int> twoSum(vector<int>& vec, int target) { map<int ,int>mapTarget; for(int i = 0; i < vec.size(); i++){ if(mapTarget.find(vec[i]) != mapTarget.end()){ vector<int> re; re.push_back(mapTarget.find(vec[i])->second); re.push_back(i); return re; } mapTarget.insert(pair<int,int>(target - vec[i], i)); } return vector<int>(); }3. 使用 hash_map来存值,算法复杂度 o(n)
python实现
def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ ret_map = {} for i, num in enumerate(nums): index = ret_map.get(target - num, None) if index is None: ret_map[num] = i else: return [ret_map[target - num], i]
对代码做些优化
def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ ret_map = {} for i, num in enumerate(nums): if target - num in ret_map: return [ret_map[target - num], i] ret_map[num] = i
4. 先排序,再前后杂遍历, 时间复杂度o(n*logn + n)
算法复杂度偏高,题目要求把初始位置记录起来,比较麻烦,就没实现。
0 0
- 1. Two Sum && 167. Two Sum II
- LeetCode 1. Two Sum
- [LeetCode]1.Two Sum
- LeetCode 1.Two Sum
- LeetCode --- 1. Two Sum
- 1.Two Sum
- [Leetcode] 1. Two Sum
- leetcode---1.Two sum
- 1.Two Sum
- [Leetcode] 1. Two Sum
- LeetCode 1.Two Sum
- 1. Two Sum
- 1. Two Sum
- 1. Two Sum Ruby
- LeetCode 1.Two Sum
- LeetCode 1.Two Sum
- 1. Two Sum
- 1.Two Sum
- 关于ASP.NET中OnClientClick事件Eval函数解析错误的处理
- 关于android调用系统摄像头获取图片过小的解决方案
- 侧滑
- Web前端教程-02.01.HTML5开发前的准备
- windows下rsync的数据同步安装方法(那些年一起踩过的坑)
- 1. Two Sum
- HashMap类
- 关于unity5鼠标在物体上的检测相关问题
- 我是一个线程(修订版)
- 树莓派,PCA9685 pwm控制
- WebRTC源码分析二:音频模块结构
- spring 泛型API
- android 关于使用webView的一些问题记录
- 大型网站架构系列:缓存在分布式系统中的应用(一)