首页 > 其他分享 >L1-两数之和

L1-两数之和

时间:2023-11-03 23:22:20浏览次数:23  
标签:语句 Map target nums int L1 new 两数

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

示例:

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

  首先想到的是双重for循环(解一)

  根据题解了解到map(解二)

解1:

class Solution {

    public int[] twoSum(int[] nums, int target) {
        // int[] nums = {2,7,11,15};
        // int target = 13;
        int[] result = new int[2];
        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = i+1; j < nums.length; j++) {
                if(nums[i] + nums[j] == target){
                    //System.out.println("[" + i + "," + j + "]");
                    result[0] = i;
                    result[1] = j;
                }
               
            }
        }
        return result;
        
    }
}

解二:

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[] {map.get(target-nums[i]), i};
         
             }
            map.put(nums[i], i);
         }
         //throw new IllegalArgumentException("NO two sum solution");
         return new int[0];  //记得要用return语句,不然报错
    } 
}             

!!!

不是void类型的都要有return语句

 

也可以不用return语句,用

throw new IllegalArgumentException("NO two sum solution");这一句

 

gpt给出的解释::根据给出的代码,如果没有找到满足条件的两个数,它会抛出IllegalArgumentException异常。这是因为方法的返回类型是int[],但是在没有找到解决方案的情况下,没有明确的返回语句。

在Java中,如果一个方法声明了一个非void的返回类型,那么在所有可能的代码路径上都必须有一个返回语句。在这种情况下,如果没有找到解决方案,就需要抛出异常或返回一个特殊值来表示无解。如果不添加throw new IllegalArgumentException("NO two sum solution");语句,编译器会检测到代码路径上缺少返回语句,从而导致报错。

因此,为了修复这个错误,可以在循环结束后添加throw new IllegalArgumentException("NO two sum solution");语句,以确保在没有找到解决方案时抛出异常。这样就满足了方法的返回类型为int[]的要求,并提供了处理无解情况的机制。

 

 

知识点:

Map:提供的是一种快速查找和访问值的方法,类似于字典或哈希表

  • Map接口定义了一组方法来操作键-值对,常见的实现类有HashMap、Tree Map、LinkedHashMap等。
  • Map 中的每个键都是唯一的,而值可以重复。通过给定的键,我们可以查找和获取对应的值。这使得 Map 在需要根据键快速查找和访问值的场景中非常有用。
  • 常见的 Map 方法和操作:
    • put(key,value): 向 Map 中插入一个键-值对。
    • get(key):根据键获取对应的值
    • containsKey(key):检查Map中是否包含指定的键
    • containsValue(value):检查Map中是否包含指定的值
    • remove(key):根据键从Map中删除对应的键-值对
    • size():获取Map中键值对的数量
    • keySet():获取Map中所有键的集合
    • values():获取Map中所有值的集合
    • entrySet():获取Map中所有键-值对的集合

 

标签:语句,Map,target,nums,int,L1,new,两数
From: https://www.cnblogs.com/18191xq/p/17784325.html

相关文章

  • 167. 两数之和 II - 输入有序数组
    给你一个下标从1开始的整数数组numbers,该数组已按非递减顺序排列,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是numbers[index1]和numbers[index2],则1<=index1<index2<=numbers.length。以长度为2的整数数组[index1,inde......
  • api-ms-win-core-path-l1-1-0.dll下载(win7-32位)
      下载 api-ms-win-core-path-l1-1-0.dll 后拷贝到文件夹:32位系统 c:\windows\system32  下载链接: https://www.dll-files.com/api-ms-win-core-path-l1-1-0.dll.html ......
  • LeetCode每日算法2—两数相加
    题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字0之外,这两个数都不会以0开头。示例输入:(2......
  • 1.两数之和
    题目概述:给定一个数组和target,要求我们在数组中找到两个数,使这两个数之和为target,返回这两个数在数组中的下标解题思路:由于数据范围较小,直接使用暴力做法。当然可以使用二分或哈希进行优化代码:classSolution{publicint[]twoSum(int[]nums,inttarget){int......
  • 01-两数之和
    一、两数之和题目如下:也就是输入先给定一个数组,和目标的target值,然后再找出目标为target值的一个索引C语言代码如下:/***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*twoSum(int*nums,intnumsSize,inttarget,int*returnSize)......
  • [SUCTF 2018]MultiSQL1
    0x01注入点发现登录,注册页面都尝试了一下,没有可以注入的地方但是获取了有一个比较关键的信息:admin是其中已经存在的一个用户按照正常流程注册登录:注意url中的id值,修改id=1之后:可以猜测,id是有一个get注入点。0x02注入类型判断可堆叠注入和过滤(select,union)是怎么看出来......
  • Leecode 1. 两数之和 Two Sum
    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11......
  • LeetCode 1.两数之和
    题目描述给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例第一次提交的代码i......
  • QT&TCL1 调用TCL解释器
    TCL作为一种工具语言已经在很多地方得到广泛的应用,在土木方面著名的例子就是ANSYS了。当然作为UCB开发的OpenSees自然也是要用自家的TCL语言了,不过最新的OpenSees源代码中已经增加了对于Python语言的支持。虽然官方尚没有公开Python的使用方式,但是相信应该很快就可以看到使用Python......
  • centos8升级openssl1.1.1V+openssh9.4P1亲测可用
    #!/bin/bashclearexportLANG="en_US.UTF-8" #update.fix.2023-09-05#脚本变量DATE=`date"+%Y%m%d"`PREFIX="/usr/local"PERL_VERSION="5.37.5"OPENSSL_VERSION="openssl-1.1.1v"OPENSSH_VERSION="openssh-9.4......