LeetCode1. 两数之和

题目

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

分析

本题目是经典哈希map使用的题目。

有关map的总结,见下图代码随想录的carl大佬图

 

 本题不要求有序,所以使用unordered_map会快一些,但要注意向unordered_map插入数据的写法

代码

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         unordered_map<int,int> m;
 5         for(int i = 0;i < nums.size();i++){
 6             auto it = m.find(target - nums[i]);
 7             if(it != m.end()){
 8                 return {i,it->second};
 9             } 
10             //m.insert(nums[i],i); 找不到成员函数,写法错误
11             //m[nums[i]]  = i; 可以
12             //m.insert(pair<int,int> (nums[i],i));  可以
13             //m.insert({nums[i],i});可以
14         }
15         return {};
16     }
17     
18 };

 

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         unordered_map<int,int>mp; //这里key:nums[i],value:下标
 5         for(int i = 0;i < nums.size();i++){
 6             int r = target - nums[i];
 7             if(mp.count(r)){
 8                 //unordered_map中 find、count 查询的是主键
 9                 return {mp[r],i};
10             }
11             mp[nums[i]] = i;
12         }
13         return {};
14     }
15 };

C++ 有关map 的常用函数总结 https://www.cnblogs.com/fresh-coder/p/15945957.html

posted @ 2021-01-18 15:45  Uitachi  阅读(53)  评论(0编辑  收藏  举报