two sum
2015-06-15 20:50
253 查看
class Solution { public: vector<int> twoSum(vector<int> &numbers, int target) { vector<int> ret(2,-1); unordered_map<int, int> m; //value->index map for(int i = 0; i < numbers.size(); i ++) { if(m.find(target-numbers[i]) == m.end()) //target-numbers[i] not appeared m[numbers[i]] = i; else { ret[0] = m[target-numbers[i]]+1; ret[1] = i+1; return ret; } } } };
每次遍历,都开始查询,如果没有匹配的值,就加入map中,这样可以保证,一次性遍历完成。即便是有相同元素也没有关系。比如3,4,3,6;target=6时。。
而不是常规的思路,先加入map然后查询。。
相关文章推荐
- 动态库打包相关问题的解决思路
- 历史执行Sql语句性能分析 CPU资源占用时间分析
- fcitx-anthy的按键设置记录---人类版本
- Android定制ListView
- 基础学习总结(二)---认识布局与配置测试环境
- leetcode--5 Longest Palindromic Substring
- 第三阶段冲刺(第一天)
- 棋盘覆盖问题
- 典型的查找算法
- 《C++ 程序设计300例》
- 算法资料连接汇总(不断更新中)
- oracle中rownum的应用
- 时区、时间、夏令时及NTP时间同步设置
- POJ 1611 并查集
- Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法
- Android布局大全
- ViewPagerIndicator 取代TabHost,实现滑动tab,引导页等效果
- awk应用-计算学生的平均成绩
- CSS3+JS 实现超炫的散列画廊特效
- Hadoop家族产品