我需要一个算两数之和的java代码,给定一个整数数组nums 和一个整数目标值target ,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。
时间: 2023-10-20 15:10:37 浏览: 69
好的,下面是一个简单的算法实现:
```java
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
result[0] = map.get(complement);
result[1] = i;
break;
}
map.put(nums[i], i);
}
return result;
}
```
这个算法使用了哈希表来存储数组中的值和它们对应的下标,然后遍历数组,对于每个数,检查是否存在一个与之配对的数,使得它们的和等于目标值。如果存在这样的一对数,就返回它们的下标。如果没有找到,则将当前数和它的下标存储到哈希表中,以便后续检查。
相关问题
帮我用java写一段代码,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
在这里,我们可以使用哈希表来解决此问题。
代码如下:
```java
import java.util.HashMap;
class Solution {
public int[] twoSum(int[] nums, int target) {
// 创建哈希表
HashMap<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);
}
// 如果没有找到答案,则返回 null
return null;
}
}
```
在上面的代码中,我们使用了一个哈希表来存储每个数字的值和其在数组中的下标。然后,我们遍历数组中的每个数字,并计算需要的目标数字。如果哈希表中存在该数字,则找到了答案,并返回下标。否则,我们将当前数字放入哈希表中。
这是一个 O(n) 的解决方案,其中 n 是数组中的数字数量。
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。如何用java代码实现
```
public 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");
}
```
这里使用了哈希表来记录每个数字的下标。遍历数组时,计算当前数字与目标值的差值,然后在哈希表中查找是否存在这个差值,如果存在,说明找到了两个数,直接返回它们的下标;如果不存在,将当前数字与其下标存入哈希表中。如果遍历完整个数组仍然没有找到答案,说明不存在这样的两个数,抛出异常。
阅读全文