java中两数之和,求下标数组 - 面试宝典

举报
皮牙子抓饭 发表于 2023/08/25 09:14:25 2023/08/25
【摘要】 在Java中,可以通过以下代码实现求两数之和的下标数组:javaCopy codepublic class TwoSum { public static int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i <...

在Java中,可以通过以下代码实现求两数之和的下标数组:

javaCopy codepublic class TwoSum {
    public static int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int complement = target - nums[i];
            if (map.containsKey(complement)) {
                return new int[] { map.get(complement), i };
            }
            map.put(nums[i], i);
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

该方法使用了哈希表来存储数组中的元素及其对应的下标。遍历数组时,对于每个元素,计算目标值与当前元素的差值,然后在哈希表中查找是否存在该差值,如果存在,则返回差值对应的下标和当前元素的下标。如果不存在,则将当前元素及其下标存入哈希表中。如果遍历完整个数组都没有找到满足条件的两个元素,则抛出异常。 可以通过调用​​twoSum​​方法来获取两数之和的下标数组。例如:

javaCopy codeint[] nums = {2, 7, 11, 15};
int target = 9;
int[] result = TwoSum.twoSum(nums, target);
System.out.println(Arrays.toString(result));

输出结果为​​[0, 1]​​,表示数组中下标为0和1的两个元素相加等于目标值9。

以下是一个示例代码,演示如何计算两数之和的下标数组:

javaCopy codeimport java.util.HashMap;
import java.util.Map;
public class TwoSum {
    public static int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int complement = target - nums[i];
            if (map.containsKey(complement)) {
                return new int[]{map.get(complement), i};
            }
            map.put(nums[i], i);
        }
        throw new IllegalArgumentException("No two sum solution");
    }
    public static void main(String[] args) {
        int[] nums = {2, 7, 11, 15};
        int target = 9;
        int[] result = twoSum(nums, target);
        System.out.println("两数之和的下标数组为:" + result[0] + ", " + result[1]);
    }
}

在示例代码中,首先定义了一个​​TwoSum​​类,其中包含了一个静态方法​​twoSum​​用于计算两数之和的下标数组。在​​twoSum​​方法中,使用了一个哈希表来记录数组中每个元素的值与对应的下标。通过遍历数组,对于每个元素,计算目标值与当前元素的差值,并在哈希表中查找是否存在该差值。如果存在,则返回差值对应的下标和当前元素的下标。如果不存在,则将当前元素及其下标存入哈希表中。如果遍历完整个数组都没有找到满足条件的两个元素,则抛出异常。 在​​main​​方法中,定义了一个示例数组​​nums​​和目标值​​target​​,然后调用​​twoSum​​方法计算两数之和的下标数组,并将结果打印输出。 执行示例代码,输出结果为:

plaintextCopy code两数之和的下标数组为:0, 1

表示数组中下标为0和1的两个元素相加等于目标值9。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。