【力扣hot100】哈希专题

1.两数之和

判断是否有两数和等于target,对于每一个数x判断是否还存在target-x且target-x的下标不是x下标即可。

cpp 复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int n=nums.size();
        unordered_map<int,int>mp;
        vector<int>ans;
        for(int i=0;i<n;i++){
            mp[nums[i]]=i;
        }
        for(int i=0;i<n;i++){
            if(mp.count(target-nums[i])&&mp[target-nums[i]]>i){
                ans.push_back(i);
                ans.push_back(mp[target-nums[i]]);
                break;
            }
        }
        return ans;
    }
};

49.字母异位词分组

将每一个字符串排序后即可得到键,值是异位词数组。

c++ 复制代码
class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>>ans;
        unordered_map<string,vector<string>>mp;
        for(auto str:strs){
            string key=str;
            sort(key.begin(),key.end());
            mp[key].push_back(str);
        }
        for(auto i=mp.begin();i!=mp.end();i++){
            ans.push_back(i->second);
        }
        return ans;
    }
};

128.最长连续序列

该题题目要求要用O(N)的解法,所以不能直接排序。将数组中的所有数插入哈希集合中,对于集合中每一个数x,判断x-1是否存在,不存在则开始找以x为起点的最长连续序列。

c++ 复制代码
class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int>s(nums.begin(),nums.end());
        int n=nums.size();
        int ans=0;
        for(auto i:s){
            if(s.contains(i-1)){
                continue;
            }
            int j=i+1;
            while(s.contains(j)){
                j++;
            }
            ans=max(ans,j-i);
        }
        return ans;
    }
};
相关推荐
To_OC2 小时前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode
用户938515635077 小时前
从 O(n²) 到 O(nlogn):一文读懂快速排序的“快”与“妙”
javascript·算法
To_OC8 小时前
手写快排次次翻车?别死背快排模板了,这才是面试官想听的底层逻辑
javascript·算法·排序算法
饼干哥哥9 小时前
Reddit VOC调研太慢?搭一个AI专家团队半小时洞察任何品类|以猫用饮水机为例
人工智能·算法·ai编程
地平线开发者10 小时前
Transformer模型部署之性能优化指南
算法
地平线开发者10 小时前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶
半个落月13 小时前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
小月土星14 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试
小月土星14 小时前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试