力扣1-两数之和(哈希表)-C++

力扣1-两数之和(哈希表)-C++,第1张

#include
#include
#include
using namespace std;

class Solution {
public:
    vector twoSum(vector& nums, int target) {
        map map;//定义哈希表
        for (int i = 0; i < nums.size(); i++) {
            int num = target - nums[i];//记录一下target减去当前数字的值
            if (map.find(num) != map.end()) //哈希表查找存在,执行if语体
            {
                return { map[num],i };
            }//如果在哈希表map找到该值,直接返回这个组合
            else {
                map[nums[i]] = i;
            }//如果没找到,将当前数字加入哈希表map
        }//遍历数组(vector容器数组)中的每一个数字
        return {-1,-1};//最后for遍历循环结束还没有找到,说明这个数字不存在
    }
};

int main() {
    Solution solution;
    vector position;
    vector arr = { 5,2,3,7,8 };
    int target = 9;
    position = solution.twoSum(arr, target);
    for (auto i : position)
        cout << i << endl;
    return 0;
}
 /*5 2 3 7 8  设target值为9
 0 1 2 3 4 
i=0,num=4,map[5]=0, 在map里面 数值5 对应下标为0
i = 1,num = 7,return 直接返回map[7],1 跳出来 map[7]对应的下标为3,故返回{ 1,3 }*/
 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/569878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存