两数之和 Java

博客围绕LeetCode第一题两数之和展开,介绍了两种解决方法。一是枚举法,用两个循环查找;二是哈希表法,将元素和索引以键值对形式保存,可高效检索。作者表示方法一易实现,方法二参考题解才完成,且哈希表平时较少使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两数之和

题目描述

在这里插入图片描述

这是LeetCode的第一题。

难度:简单。


解决方法

方法一:枚举

​ 这是最简单的方法,使用两个循环,枚举数组中的每一个数x,并寻找数组中是否存在target-x

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int count=nums.length;	
        for(int i=0;i<count-1;i++){
            for(int j=i+1;j<count;j++){
                if(nums[i]+nums[j]==target)
                    return new int[]{i,j};
            }
        }
        return new int[]{0,0};
    }
}

方法二:哈希表

​ 哈希表,也称为散列表,是一种数据结构,用于存储键值对。它通过将键映射到与之对应的值的方式来实现高效的数据检索。哈希表的主要思想是将键通过哈希函数转化成一个索引,然后将值存储在该索引处。

​ 在方法一中,使用两个循环的时间复杂度太高了,对此,我们可以使用哈希表。枚举数组中的每一个数x,并将元素和索引以键值对 <nums[i],i> 的形式保存在哈希表中,使用containskey方法可以查找是否存在指定键target-xget方法用于获取指定键对应的值。。

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

​ 这道题是LeetCode的第一道题,方法一很快就写出来了,但方法二还是看了题解才做出来。哈希表很早就学过了,但很少用到。

​ 这是记录做LeetCode的第一题,我很菜,加油!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值