nums = [2,7,6,3] target = 9
需要在這個中找到 nums中數字下標,累加和等于target
也就是說既要數字下標,又要nums中數字,還要查找
因此,考慮map這種既有key 又有value的哈希表
問題是 map,unordered_map, muti_map用哪一個呢?
這個題目沒有要求key有序(key是nums[i]),且key不可重復,為了提高查找效率,選用unordered_map
細節部分:
map中插入key value對用map.insert(pair<int,int>(nums[i],i));
對于map中value的部分,用iter->second
auto iter = map.find(target-nums[i])iter->second
// @before-stub-for-debug-begin
#include <vector>
#include <string>
#include "commoncppproblem1.h"using namespace std;
// @before-stub-for-debug-end/** @lc app=leetcode.cn id=1 lang=cpp** [1] 兩數之和*/// @lc code=start
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> map;for(int i = 0;i<nums.size();i++){auto iter =map.find(target-nums[i]);if(iter != map.end()){return {iter->second,i};}map.insert(pair<int,int>(nums[i],i));}return {};}
};
// @lc code=end