Java算法
package sj.shimmer.algorithm;
import java.util.HashMap;
import java.util.Map;
/**
* Created by SJ on 2021/1/25.
*/
class D1 {
public static void main(String[] args) {
int[] nums = new int[]{3, 2, 4};
int target = 6;
int[] results = twoSum(nums, target);
for (int i = 0; i < results.length; i++) {
System.out.println(i + "=" + results[i]);
}
}
/**
* 用HashMap来存储 index 和补全target需要的int值,在遍历过程中,添加之前先查询有没有补全值相等的数据,有表示找到,返回这两个下标
* @param nums
* @param target
* @return
*/
public static int[] twoSum(int[] nums, int target) {
if (nums == null || nums.length < 2) {
return nums;
}
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() == nums[i]) {
return new int[]{entry.getKey(), i};
}
}
int value = target - nums[i];
map.put(i, value);
}
return nums;
}
}

官方解
- 暴力枚举
比较每一个数x,寻找是否存在target-x
- 哈希表,即我采用的方法,但官方使用差值作为key,下标作为value