1. Two Sum。
来源:互联网 发布:迪沙药业集团如何 知乎 编辑:程序博客网 时间:2024/06/02 17:45
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, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
这道题是让在一个数组中找到两个相加能够与给定目标数相等的下标。可以是用map结构,然后遍历数组中的元素,拿到数值之后将其作为key在map中查找。如果在map中没有找到这个数值,则将目标数减去这个数值得到的结果作为key,这个数值的下标作为value存放在map中,然后继续往后面遍历。如果遇到了另一个数正好等于目标数减去刚才那个数,那么这个数作为key在map中就会存在。比如:目标数为3,数组第一个数为1,那么存放在map中的元素就是<2,0>,然后第二个数为2,此时发现map中已经有了<2,0>那么当前的下标和map中的下标就是我们所要求的结果。
#include <iostream>#include <vector>#include <unordered_map>using namespace std;class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> ret; unordered_map<int,int> m; if (!nums.empty()) { int i; for (i = 0; i < nums.size(); i++) { if (m.find(nums[i]) == m.end()) {//此时map中不存在此hash m[target-nums[i]] = i; } else { ret.push_back(m[nums[i]]);//另一个的下标索引 ret.push_back(i);//此时的下标索引 return ret; } } } return ret; }};int main() { Solution s; vector<int> num; num.push_back(2); num.push_back(7); num.push_back(11); num.push_back(15); vector<int> ret = s.twoSum(num,9); cout << ret[0] << " " << ret[1];}
运行结果可能有误差。
阅读全文
0 0
- 1. Two Sum && 167. Two Sum II
- LeetCode 1. Two Sum
- [LeetCode]1.Two Sum
- LeetCode 1.Two Sum
- LeetCode --- 1. Two Sum
- 1.Two Sum
- [Leetcode] 1. Two Sum
- leetcode---1.Two sum
- 1.Two Sum
- [Leetcode] 1. Two Sum
- LeetCode 1.Two Sum
- 1. Two Sum
- 1. Two Sum
- 1. Two Sum Ruby
- LeetCode 1.Two Sum
- LeetCode 1.Two Sum
- 1. Two Sum
- 1.Two Sum
- 【c++】vector的用法详解
- python感知机实现
- QString类的详细用法
- PHP代码优化的53个细节
- 维度建模的10大基本原则
- 1. Two Sum。
- Java面试笔试指南(七)---海量数据处理
- 数据抽取、清洗与转换BI项目中ETL设计
- 2017年全国大学生电子竞赛电源A题
- MyBatis的解析和运行原理
- HDU 6135 Casual Podracing(CDQ分治)
- Java9安装
- 【笔记】《WebGL编程指南》学习-第2章WebGL入门(4-画一个点-版本2))
- 添加新登录用户