leetcode No1. Two Sum
来源:互联网 发布:安邦和谐健康 知乎 编辑:程序博客网 时间:2024/06/07 11:42
Question:
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.
Example:
Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
即,给一个整型数组nums和一个整数target,找出两个数相加等于target,并返回这两个数在nums的下标(假定这两个数一定存在)Algorithm:Hash Table
1、用Hash Table统计每个元素出现的次数
2、设x+y = target,第一次循环,找出x,即hash[x]>0&&hash[y]>0
3、第二次循环从x的下标开始,找y的下标
Submitted Code:
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> hash; vector<int> twoSum; for(int &i : nums) hash[i]++; int m=0,y=0; for(int i=0;i<nums.size();i++) { int x = nums[i]; y = target - x; if(hash[y] > 0 && x!=y) { m = i; twoSum.push_back(i); break; } if(hash[y] > 1 && x==y) //x==y的情况 { m = i; twoSum.push_back(i); break; } } for(int j=m+1;j<nums.size();j++) { if(nums[j] == y) { twoSum.push_back(j); break; } } return twoSum; }};
2017/3/2更新
可以一遍遍历就得出结果,还是用hashtable,边遍历,边记录
因为X+Y=target,第一个数X可以记录在哈希表中,等到遍历到Y时,哈希表中已经有X了
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> hash; //Key is the number and value is its index in the vector vector<int> res; int numToFind=0; for(int i=0;i<nums.size();i++) { numToFind=target-nums[i]; if(hash.find(numToFind)!=hash.end()) //if numberToFind is found in map, return them { res.push_back(hash[numToFind]); res.push_back(i); return res; } //number was not found. Put it in the map. hash[nums[i]]=i; } return res; }};
0 0
- leetcode No1. Two Sum
- LeetCode : No1 Two Sum Python
- LeetCode Problem No1 Two Sum
- No1.Two Sum
- 【LeetCode从零单排(Java)】No1.Two Sum
- 【Leetcode】Two Sum (Sum)
- LeetCode: Two Sum
- LeetCode: Two Sum
- [Leetcode] Two Sum
- LeetCode : Two Sum
- Leetcode: Two Sum
- leetcode 46: Two Sum
- [LeetCode] Two Sum
- LeetCode 1 - Two Sum
- Leetcode : Two Sum
- 【leetcode】Two Sum
- [LeetCode]Two Sum
- leetcode Two Sum
- Codeforces Round #356 (Div. 2)
- ubuntu 14.04下 下载Android源码
- 7. JPA - Hibernate【从零开始学Spring Boot】
- <LeetCode OJ> 200 / 130 Number of Islands / Surrounded Regions
- 移动硬盘提示需要格式化
- leetcode No1. Two Sum
- 北大青鸟asp.net学习总结——Asp.net对象之Application对象、Server对象
- jquery ajax请求成功,返回了数据,但是不进success回调函数的问题
- 手机开发实战132——SyncML介绍1
- Add Binary
- 手机开发实战133——SyncML介绍2
- 8. 使用JPA保存数据【从零开始学Spring Boot】
- 【PHP】PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数)
- JavaI/O流