欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode 1.两数之和

程序员文章站 2022-04-17 17:28:13
...

LeetCode 1.两数之和

方法一:一遍hash

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> m;//建立无序map    
        for(int i=0;i<nums.size();i++){
            if(m.find(target-nums[i]) != m.end())//m中存在对应的键值
                return {m[target-nums[i]] , i};//返回下标
            m[nums[i]]=i;       //没找到则插入map
        }
        return {};//处理空向量
    }
};

方法二:两遍哈希

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> m;
        for(int i=0;i<nums.size();i++)//向map中添加元素
            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)//m中存在对应的键值,且不为i
                return {i , m[target-nums[i]]};//返回下标
        }
        return {};
    }
};
相关标签: LeetCode