java求无序数组两数之和
时间: 2024-09-25 12:06:34 浏览: 31
在 Java 中,如果你需要找出一个无序整数数组中是否存在两个元素相加等于目标值,你可以使用哈希表(HashMap)来解决这个问题。这是一个常见的一次遍历算法,通常称为“Two Sum”问题。
以下是基本的步骤:
1. 创建一个空的 HashMap,用于存储数组中的元素及其索引。
2. 遍历数组,对于每个元素:
a. 检查目标值(target)是否已经在 HashMap 中。如果找到了,返回当前元素的索引和之前找到的那个元素的索引,因为它们相加等于目标值。
b. 如果目标值小于当前元素,直接跳过,因为它肯定不可能和数组后面的元素相加得到目标值。
c. 如果目标值大于当前元素,尝试查找 `target - currentElement` 是否在 HashMap 中,如果是,则找到了另一个相加的数,返回这两个元素的索引。
3. 如果遍历完整个数组都没有找到满足条件的两个数,那么可以假设不存在这样的组合。
```java
public int[] twoSum(int[] nums, int target) {
if (nums == null || nums.length < 2) return new int[0];
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");
}
```
阅读全文