力扣——哈希——1.两数之和

题目

解法

1、暴力

初始

复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> ans={};
        int len=nums.size();
        for(int i=0;i<len;++i)
        {
            for(int j=0;j<len;j++)
            {
                if((nums[i]+nums[j])==target)
                {
                    ans[0]=i;
                    ans[1]=j;
                    return ans;
                }
                else
                {
                    continue;
                }
            }
        }
        return ans;
    }
};

错误

修改后

复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> ans={};
        int len=nums.size();
        for(int i=0;i<len;++i)
        {
            for(int j=i+1;j<len;j++)
            {
                if((nums[i]+nums[j])==target)
                {
                    ans.push_back(i);
                    ans.push_back(j);
                    return ans;
                }
            }
        }
        return ans;
    }
};

2、哈希

思路

使用哈希表,遍历map表

查询标准值减去当前正在查的值的差在哈希表中是否存在,如果存在,说明这一对就是要找的值。直接返回即可

如果不存在,因为这是数组内的第i个值,所以哈希表的值就是i,索引是具体的值,如hashtable[nums[i]]=i;,里面的i是在查看nums数组内的第i个值

find------>ite->first--->键值;ite->second--->索引

例子

代码

复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int len=nums.size();
        unordered_map<int,int> ans;
        for(int i=0;i<len;++i)
        {
            //寻找补数是否在哈希表内
            auto ite=ans.find(target-nums[i]);
            //如果哈希表内没到结尾就找到了这个补数,那这个补数和当前的i就是结果,直接返回即可
            if(ite!=ans.end())
            {
                //返回
                return {ite->second,i};
            }
            //如果哈希表没找到,原表的第i个位置的值为nums[i],则将这个值作为下标放入ans的位置,值为i
            ans[nums[i]]=i;
        }
        //如果没找到,返回空值
        return {};
    }
};
相关推荐
JJJJ_iii1 天前
【机器学习11】决策树进阶、随机森林、XGBoost、模型对比
人工智能·python·神经网络·算法·决策树·随机森林·机器学习
别学LeetCode1 天前
#leetcode#
leetcode
loong_XL1 天前
AC自动机算法-字符串搜索算法:敏感词检测
开发语言·算法·c#
Xの哲學1 天前
Linux Netlink全面解析:从原理到实践
linux·网络·算法·架构·边缘计算
Tisfy1 天前
LeetCode 3289.数字小镇中的捣蛋鬼:哈希表O(n)空间 / 位运算O(1)空间
算法·leetcode·散列表·题解·位运算·哈希表
2501_938963961 天前
基于音乐推荐数据的逻辑回归实验报告:曲风特征与用户收听意愿预测
算法·机器学习·逻辑回归
2501_938791221 天前
逻辑回归正则化解释性实验报告:L2 正则对模型系数收缩的可视化分析
算法·机器学习·逻辑回归
2501_938790071 天前
逻辑回归正则化参数选择实验报告:贝叶斯优化与网格搜索的效率对比
算法·机器学习·逻辑回归
2501_938780281 天前
逻辑回归特征重要性排序实验报告:不同特征选择方法的排序一致性验证
算法·机器学习·逻辑回归
而后笑面对1 天前
cf Codeforces Round 1062 (Div. 4) Editorial的一些反思
算法