当前位置: 首页 > article >正文

两数之和 力扣1

一、题目

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

二、思路

        最先想到的就是双for循环解决。

        有没有别的方法呢,可以采用哈希法。当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。定义一个map集合,map中的存储结构为 {key:数据元素,value:数组元素对应的下标}。

三、代码

        1、暴力法  

class Solution {
    public int[] twoSum(int[] nums, int target) {
        //暴力法干就完了
         for(int i = 0;i < nums.length;i++) {
             for(int j = i + 1;j< nums.length;j++) {
                 if(nums[i] + nums[j] == target) {
                     return new int[] {i,j};
                 }
             }
         }
         return new int[]{0,0};
    }
}

 2、map集合

        题目说可以按任意顺序返回答案,因此顺序无需考虑。

class Solution {
    public int[] twoSum(int[] nums, int target) {
       //哈希: 当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。
        HashMap<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int a = target - nums[i]; //记录当前的目标值的余数
            if(map.containsKey(a)) { // 查找当前的map中是否有满足要求的值
                return new int[]{map.get(a),i};//  如果有,返回目标值
            }else{
                map.put(nums[i],i);//  如果没有,把访问过的元素和下标加入map中
            }
        }
        return null;
    }
}

 


http://www.kler.cn/a/579801.html

相关文章:

  • npm终端执行时报错
  • 5. 前后端实现文件上传与解析
  • vue3table列表合并列相同数据
  • VSCode离线安装Verilog插件教程
  • 面试题之react useMemo和uesCallback
  • win10电脑鼠标速度突然变的很慢?
  • Skyvern AI 实现 浏览器爬虫+自动化工具
  • 【性能测试】Jmeter详细操作-小白使用手册(2)
  • DeepSeekR1之五_RAGFlow中配置DeepSeekR1模型时错误问题及处理
  • WPF 在图像编辑工具开发中的优势
  • 【Proteus仿真】【STM32单片机】家用电计量系统
  • Qt:界面优化
  • Ubuntu 22.04 官方下载安装 Gradle 记录
  • 如何修复“RPC 服务器不可用”错误
  • 本地部署Navidrome个人云音乐平台随时随地畅听本地音乐文件
  • 数据结构 -图 -基础
  • 媲美Deepseek R1 671B的千问QwQ32B本地部署与远程访问实测流程
  • mitmproxy配合Wireshark 抓包分析
  • conda list <package> 指令输出的build和channel含义
  • 电力行业中分布式能源管理(Distributed Energy Management System, DEMS)的实现