【leetcode】 1. Two Sum
2016-04-12 19:36
393 查看
/** * 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]. * */ #include <iostream> #include <string> #include <vector> #include <unordered_map> using namespace std; vector<int> twoSum(vector<int>& nums, int target) { vector<int> rs(2, 0); int s = 0; int e = nums.size() - 1; for (int i = 0; i < e; ) { s = (nums[i] + nums[e]); if (s == target) { rs[0] = i; rs[1] = e; break; } else if (s < target) i++; else e--; } return rs; } //leetcode 公认比较好的算法 vector<int> twoSum1(vector<int> &nums, int target) { vector<int> rs(2, 0); int tmp; unordered_map<int, int> hash; for (int i = 0; i < nums.size(); i++) { tmp = target - nums[i]; if (hash.find(tmp) != hash.end()) { rs[0] = hash[tmp]; rs[1] = i; } hash[nums[i]] = i; } return rs; } int main() { vector<int> nums{ 2, 7, 11, 15 }; int target = 17; vector<int> rs = twoSum1(nums, target); cout << rs[0] << " " << rs[1] << endl; system("pause"); return 0; }
相关文章推荐
- 嵌入式 hi3518平台检测网线是否插上
- solr 4.6配置正解
- RViz 实时观测机器人建立导航2D封闭空间地图过程 (SLAM) ----27
- 剑指offer系列之36:数字在排序数组中出现的次数
- Objective-C 面向对象的编程语言
- 安卓MVP设计思想,结合greendao+okhttp通过一个登陆的例子来进行学习(eclipse篇)
- Java基础学习总结(38)——Lombok的使用和原理
- Java基础学习总结(38)——Lombok的使用和原理
- LeetCode *** 62. Unique Paths
- lombok的使用和原理
- android broadcast使用总结分享
- 项目23--用多文件组织带武器的游戏角色类
- 解决unable unable to locate package问题
- 嵌入式 hi3518平台指定网卡测试是否通外网
- 【error】: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
- 润乾集算报表实现减少存储过程
- 解决did not call through to super.onDestroy()
- 十个随机变量的求和
- MBR为什么最大只能用2TB
- nginx反向代理同一主机多个网站域名