java给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
时间: 2024-12-28 08:36:19 浏览: 11
这是一个经典的算法问题,通常被称为“两数之和”(Two Sum),可以用哈希表(Hash Table)或双指针法(Two Pointers)来解决。在 Java 中,你可以按照以下步骤实现:
```java
public int[] twoSum(int[] nums, int target) {
// 创建一个空的HashMap用于存储元素及其索引
HashMap<Integer, Integer> map = new HashMap<>();
// 遍历数组
for (int i = 0; i < nums.length; i++) {
// 如果目标值减去当前元素的值已经存在于map中,说明找到了一对和为目标值的数
if (map.containsKey(target - nums[i])) {
return new int[]{map.get(target - nums[i]), i};
}
// 否则,将当前元素及其索引添加到map中
map.put(nums[i], i);
}
// 如果没有找到符合条件的数对,返回null或抛出异常
throw new IllegalArgumentException("No solution found");
}
```
这个方法的时间复杂度是O(n),因为它只需要遍历一次数组。如果目标值可以由数组中的多个数组成,那么你需要修改代码来处理这种情况。
阅读全文