首页 > 其他分享 >【LeetCode Hot 100】1. 两数之和

【LeetCode Hot 100】1. 两数之和

时间:2024-09-13 15:38:00浏览次数:1  
标签:map target nums int res Hot 哈希 100 两数

题目描述

显然,最简单和直接的想法是使用暴力枚举:使用双重循环枚举符合条件的下标对并返回。这种方法的时间复杂度是平方级别\(O(N^2)\)。

对于每个确定的数x,我们需要找到target - x对应的下标,暴力枚举方法使用的是直接遍历,这个操作的复杂度是线性的,而如果我们使用哈希表将元素及其下标进行对应,再进行查找时时间复杂度就变成了常熟级别。而且,元素自己不能和自己匹配,使用哈希表先查找是否包含此键值,也可以保证不会发生这种情形。

于是,思路就是,我们从前往后遍历数组下标i,每处理一个x = nums[i],首先查询target - x是否存在哈希表中,如果存在则说明我们找到了答案,可以返回结果,如果不存在,我们就需要将此键值对{nums[i], i}插入哈希表中,继续处理下一个元素。

// C++
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> m;
        vector<int> res(2);
        for (size_t i = 0; i < nums.size(); ++i) {
            if (m.find(target - nums[i]) != m.end()) {
                res[0] = m.at(target - nums[i]);
                res[1] = i;
            }
            m.insert({nums[i], i});
        }
        return res;
    }
};

// Java
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; ++i) {
            if (map.containsKey(target - nums[i])) {
                return new int[] {i, map.get(target - nums[i])};
            }
            map.put(nums[i], i);
        }
        throw new IllegalArgumentException("");
    }
}

标签:map,target,nums,int,res,Hot,哈希,100,两数
From: https://www.cnblogs.com/louistang0524/p/18412283

相关文章

  • Python “集合” 100道实战题目练习,巩固知识、检查技术
     本文主要是作为Python中列表的一些题目,方便学习完Python的列表之后进行一些知识检验,感兴趣的小伙伴可以试一试,含选择题、判断题、实战题、填空题,答案在第五章。在做题之前可以先学习或者温习一下Python的列表,推荐阅读下面这篇文章:Python全网最全基础课程笔记(九)——集合......
  • 【北京迅为】itop-龙芯2k1000 sylixos 嵌入式实时系统烧写手册-第三章工具使用
     迅为itop-龙芯2k1000开发板  硬件配置:国产龙芯处理器,双核64位系统,板载2GDDR3内存,流畅运行Busybox、Buildroot、Loognix、QT5.12系统!接口:板载4路USBHOST、2路千兆以太网、2路UART、2路CAN总线、MiniPCIE、SATA固态盘接口、4G接口、GPS接口、WIFI、蓝牙、MiniHDMI......
  • SBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT
    编辑:llSBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT型号:SBT20100VFCT品牌:ASEMI封装:ITO-220AB安装方式:插件批号:最新恢复时间:35ns最大平均正向电流(IF):20A最大循环峰值反向电压(VRRM):100V最大正向电压(VF):0.75V~0.95V工作温度:-65°C~150°C芯片个数:2芯片尺寸:mil正向浪涌电流(IFMS):180AS......
  • SBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT
    编辑:llSBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT型号:SBT20100VFCT品牌:ASEMI封装:ITO-220AB安装方式:插件批号:最新恢复时间:35ns最大平均正向电流(IF):20A最大循环峰值反向电压(VRRM):100V最大正向电压(VF):0.75V~0.95V工作温度:-65°C~150°C芯片个数:2芯片尺寸:mil正向浪......
  • Hash表实践 —— 两数之和
    目录题目背景解题思路题目背景这个题目用常规的双循环就可以完成。但不是最优解。为什么?看看他的步骤数:N=【3,2,4】求结果为6的两个元素坐标如下,1).3+2=5不等于2).3+4=7不等于3).2+4=6等于,获取坐标【1,2】规律:2个数=1个步骤3个数=3个步骤4个数=6......
  • VU9P加速卡设计原理图 :410-基于XCVU9P+ C6678的100G光纤的加速卡
    基于XCVU9P+C6678的100G光纤的加速卡一、板卡概述     二、技术指标 •  板卡为自定义结构,板卡大小332mmx260mm; •  FPGA采用Xilinx Virtex UltralSCALE+ 系列芯片 XCVU9P; •  FPGA挂载4组FMC HPC 连接器; •  板载4路QS......
  • 京东h5st4.7.4(9段) 价值1000元?纯算奶妈级教学
    网站:aHR0cHM6Ly93d3cuamQuY29tLw==接口:aHR0cHM6Ly9hcGkubS5qZC5jb20=0.闲聊京东的h5st看着吓人一打开f12就显示本页面由京东-主站前端团队开发维护           --JDC其实过程很明显,经过了6,7个平坦流才可以拿到结果主要细心一点,相信你一定也......
  • mybatis in中超过1000个值解决办法(超简单)
    众所周知sql中条件in的值是不能超过1000个的,而mybatis可以使用动态sql拼接的方式绕开这个限制,网上看了很多例子,我感觉都不太好理解,下面介绍一个超简单的例子。select*fromuser_infowhere1=1<iftest="userList!=nullanduserList.size()>0">and(userIdin<f......
  • 项目中有 10000 个 if else 如何优化?
    本文我总结10种优化ifelse的方法,当然根据不同的场景还可以使用多态、责任链模式、模板方法模式等更多方法来消除ifelse。方案1:策略模式如果有 1万个 ifelse分支,那就会有1万个策略类,此时就会造成类膨胀,并且随着时间的推移逐渐变得更加庞大而复杂。如果是多层的ifelse......
  • 项目中有 10000 个 if else 如何优化?
    本文我总结10种优化ifelse的方法,当然根据不同的场景还可以使用多态、责任链模式、模板方法模式等更多方法来消除ifelse。方案1:策略模式如果有 1万个 ifelse分支,那就会有1万个策略类,此时就会造成类膨胀,并且随着时间的推移逐渐变得更加庞大而复杂。如果是多层的ifelse......