java中两数之和,求下标数组 - 面试宝典
【摘要】 在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)