/**
* 两数之和
*/
public class TwoSum {
public static void main(String[] args) {
int[] nums = {1, 8, 9, 6, 6, 7, 4, 8, 4, 5};
int target = 10;
twoSum(nums, target);
}
public static int[] twoSum(int[] nums, int target) {
// K 为满足条件的补数 V 为所在数组对应的下标
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int num = nums[i];
if (map.containsKey(num)) {
return new int[]{map.get(num), i};
}
/*
如果target为 10 当前的num为1 满足条件的另一个num则为 10-1=9
将需要满足条件的num(补数)放入map中保存对应的数组下标,
如果匹配成功取补数对应的下标和当前num的下标返回
*/
map.put(target - num, i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
两数之和
最新推荐文章于 2024-10-07 17:39:40 发布