力扣——哈希——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 {};
    }
};
相关推荐
超级皮皮4 小时前
力扣热题之stack
算法·leetcode·职场和发展
weixin_470740365 小时前
某算法的python执行汇编
汇编·python·算法
是乐谷6 小时前
燧原科技招大模型训练算法工程师
科技·算法
YuTaoShao6 小时前
【LeetCode 热题 100】139. 单词拆分——(解法一)记忆化搜索
java·算法·leetcode·职场和发展
圣保罗的大教堂6 小时前
leetcode 1277. 统计全为 1 的正方形子矩阵 中等
leetcode
小马学嵌入式~7 小时前
数据结构:队列 二叉树
c语言·开发语言·数据结构·算法
焊锡与代码齐飞8 小时前
嵌入式第三十五课!!Linux下的网络编程
linux·运维·服务器·开发语言·网络·学习·算法
省四收割者9 小时前
Go语言入门(10)-数组
数据结构·经验分享·笔记·vscode·算法·golang
lxmyzzs9 小时前
【图像算法 - 21】慧眼识虫:基于深度学习与OpenCV的农田害虫智能识别系统
人工智能·深度学习·opencv·算法·yolo·目标检测·计算机视觉
KeithTsui9 小时前
GCC C语言整数转换的理解(Understanding of Integer Conversions in C with GCC)
c语言·开发语言·算法