帮我写一个java的算法题
时间: 2024-01-23 15:03:35 浏览: 20
好的,下面为您提供一道 Java 算法题:
题目描述:
给定一个整数数组 nums,找到其中两个数,使得它们的和等于一个给定的目标值 target,并返回这两个数的下标。
示例:
输入:nums = [2, 7, 11, 15], target = 9
输出:[0, 1]
解释:nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]
输入:nums = [3, 2, 4], target = 6
输出:[1, 2]
输入:nums = [3, 3], target = 6
输出:[0, 1]
解题思路:
这道题可以用哈希表来解决。我们可以遍历数组 nums 中的每个元素,用 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");
}
```
以上就是本题的解题思路和 Java 实现。