The number of two and seek leetcode

class Solution{
    public:
    vector<int> twoSum(vector<int>& nums, int target){
        unordered_map<int, int> m;//定义一个哈希表

        for(int i=0; i<nums.size(); i++){
            m[nums[i]] = i;//将容器中的元素添加到哈希表中,哈希表相当于一个一对多的字典,记录当前数字在容器中的位置
        }

        for(int i=0; i<nums.size(); i++){
            if(m.find(target - nums[i]) != m.end() && m[target - nums[i]] != i)//如果对应当前位置数字的target的另外一半在容器中,并且不是当前数字
            {
                return{i, m[target-nums[i]]};
            }
        }

        return {};
    }
};
了解一点C++的vector知识
vector是C++的一个容器,可以看作一个封装好的数字
常用的方法有:
vector<int> a ;                               //声明一个int型向量a
vector<int> a(10) ;                          //声明一个初始大小为10的向量
vector<int> a(10, 1) ;                      //声明一个初始大小为10且初始值都为1的向量
vector<int> b(a) ;                         //声明并用向量a初始化向量b
vector<int> b(a.begin(), a.begin()+3) ;   //将a向量中从第0个到第2个(共3个)作为向量b的初始值
a.size()
a.begin()
a.end()
了解一点哈希函数的东西
相当于一个字典,储存的是键值对 key-value
hash_map<int, string> myMap;
myMap[key] = value
有key则修改其value
没有key则创建key并插入
储存无序

 

Published 43 original articles · won praise 44 · views 6599

Guess you like

Origin blog.csdn.net/qq_41582910/article/details/105057258