LeetCode-1-Two Sum(哈希)-Medium
2015-12-19 19:37
375 查看
题意分析:
在给定的整数序列中找到位置index1和index2,要求这两个位置的数值之和等于target。其中,index1<index2,并且,位置是从1开始标定的。
题目分析:
1. 穷举是会超时的;
2.使用hash;
3.C++中没有hash,就自己写了一个,使用数值作为key,位置作为value(注意负数数值的出现);
解题代码:
在给定的整数序列中找到位置index1和index2,要求这两个位置的数值之和等于target。其中,index1<index2,并且,位置是从1开始标定的。
题目分析:
1. 穷举是会超时的;
2.使用hash;
3.C++中没有hash,就自己写了一个,使用数值作为key,位置作为value(注意负数数值的出现);
解题代码:
#include<vector> #include<algorithm> #include<math.h> using namespace std; class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int maxAbsValue=0; for(int i=0;i<nums.size();i++){ if(abs(nums[i])>maxAbsValue){ maxAbsValue=abs(nums[i]); } } vector<int> hashMap(2*maxAbsValue+1,0); int zeroPos=maxAbsValue; vector<int> ans(2); for(int i=0;i<nums.size();i++){ if(hashMap[zeroPos+nums[i]]==0){ hashMap[zeroPos+nums[i]]=i+1; } int result=target-nums[i]; if(abs(result)<=maxAbsValue){ if(hashMap[zeroPos+result]!=0 && hashMap[zeroPos+result]<i+1){ ans[0]=hashMap[zeroPos+result]; ans[1]=i+1; return ans; } } } return ans; } };
相关文章推荐
- 使用Hibernate修改数据库表中一条记录的某些字段
- processing-MySQL learning2-append()
- 5个不利于搜索引擎排名因素
- Java网络编程的知识点 Socket TCP UDP
- WARN SettingsFactory:140 - Could not obtain connection metadata
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- web.xml的运行顺序
- settimeout,cleartimeout的使用分析
- html5 canvas 笔记二(添加样式和颜色)
- 图像特征特点及其常用的特征提取与匹配方法
- 【数据结构】插入排序
- 92. Reverse Linked List II
- celery 入门
- mysql字符集调整总结
- 【数据结构】选择排序
- UIButton
- js函数中使用el表达式传入多个参数时的问题
- Python基本数据类型之int 、 float
- 几个可能会用到的前端库
- “舞客“搭建小记