leetcode_两数之和

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum

方法一:暴力枚举

遍历数组中的的每一个x,寻找是否存在target-x。

由于每一个位于x之前的元素都与x匹配过,因此每次遍历只需从x之后的元素开始寻找target-x。

代码:

复制代码
public class Test_1_1 {
    public static void main(String[] args) {
        int nums[]=new int[]{4,7,1,9,6};
        int target=8;
        int twoSum[]= Test_1_1.twoSum(nums,target);
        //测试
        for (int i:twoSum){
            System.out.println(i);
        }
    }
    public static int[] twoSum(int[] nums, int target) {
        //定义返回的索引数组
        int twoindex[]=new int[2];
        //遍历前length-1个元素,寻找后面是否有与之匹配的元素
        for (int i=0;i<nums.length-1;i++){
            //只需从nums[i]之后寻找
            for (int j=i+1;j<nums.length;j++){
                //若匹配到则存储索引下标
                if (nums[i]+nums[j]==target){
                    twoindex[0]=i;
                    twoindex[1]=j;
                }
            }
        }
        return twoindex;
    }
}
复制代码

运行结果:

方法二:哈希表查找

遍历数组中每一个x元素,先在哈希表中查找是否存在key值为target-x,如果没有,则将x作为key值,索引作为value存入哈希表中,方便后续查找;如果有,则取出相应的value值。

代码:

复制代码
public class Test_1_2 {
    public static void main(String[] args) {
        int nums[]=new int[]{8,0,9,1,8,7};
        int target=10;
        int a[]=Test_1_2.twoSum(nums,target);
        //测试
        for (int i:a){
            System.out.println(i);
        }

    }
    public static int[] twoSum(int[] nums, int target) {
        int num[]=new int[2];
        //定义哈希表
        Map<Integer,Integer> map=new HashMap<>();
        //遍历每一个x元素
        for (int i=0;i<nums.length;i++){
            int j=target-nums[i];
            //若在map中找到与x匹配的值,则取出索引
            if (map.containsKey(j)){
                num[1]=i;
                num[0]=map.get(j);
            }
            //没有则将x作为key值存入map中
            else {
                map.put(nums[i],i );
            }
        }
        return num;
    }
}
复制代码

运行结果:

 

posted @   chaplu  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示