leetcode-1-two sum
2016-02-25 00:27
387 查看
#include <iostream> #include <vector> #include <unordered_map> using namespace std; /* 用暴力搜索就要O(n)或者至少是O(nlgn),似乎会超时。 如果用hash的话就能保证O(n),注意要保存元素的下标, 所以用unordered_map,还要注意两个下标要按从小到大 的顺序。 因为结果只可能有一对下标,所以相同的数字最多有两个, 由于存入unordered_map的时候相同数字的下标会覆盖, 所以比较下标的时候保险就是一个用nums的下标,一个用查找 unordered_map返回的下标。 */ class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> mymap; vector<int> inds; for (int i = 0; i < nums.size(); i++) { mymap.insert(make_pair(nums[i], i)); } for (int i = 0; i < nums.size(); i++) { int gap = target - nums[i]; if (mymap.find(gap) != mymap.end()) { if (i > mymap[gap]) { inds.push_back(mymap[gap]); inds.push_back(i); break; } else if (i < mymap[gap]){ //一定是两个不同的下标 inds.push_back(i); inds.push_back(mymap[gap]); break; } } } return inds; } }; int main(int argc, const char * argv[]) { Solution s; vector<int> n = {0,4,3,0}; vector<int> result = s.twoSum(n, 0); for (int i = 0; i < result.size(); i++) { cout << result[i] << " "; } cout << endl; return 0; }
更改(去重)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> mymap;
vector<int> inds;
for (int i = 0; i < nums.size(); i++) {
mymap.insert(make_pair(nums[i], i));
}
for (int i = 0; i < nums.size(); i++) {
int gap = target - nums[i];
if (mymap.find(gap) != mymap.end()) {
if (i > mymap[gap]) {
inds.push_back(mymap[gap]);
inds.push_back(i);
break;
}
}
}
return inds;
}
};
相关文章推荐
- c++基础回顾
- Connector of Dynamics CRM and AX: Leads, Opportunity, and Sales quotations
- swift学习日记(十二) 泛型
- arm平台函数传递参数,反汇编实例分析
- 如何在maven的pom.xml中添加本地jar包
- C 运算符
- 使用memcache处理缓存的三种方案
- localtime、localtime_s、localtime_r的使用
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
- EasyDarwin开发出类似于美拍、秒拍的短视频拍摄SDK:EasyVideoRecorder
- redis集群搭建示例
- rime 必知必會
- mongodb 3.2 实战(一)非关系型数据库设计,如何进行mongo的数据库设计?
- Android动态加载dex技术初探
- uva 10313 Pay the Price
- 【每日算法】二叉树的遍历
- Mina(四)
- 推荐系统在生活中的运用
- mysql创建触发器错误提示:Can not update in stored function/trigger already used by statement invoked
- JavaScript常用的事件