我的解法:
一开始是想着排序之后双指针,后来发现题目要求的是存储下标。就想着搞个struct存下标和内容,然后根据内容排序,再存下标。后来没有这么做,是因为觉得有点烦。直接暴力求解了,显然是可以的,只是效率有点不行。需要吐槽一句,这里没有给出范围,就很难受。
最佳答案的解法是搜一遍的hash table,就是边加边找有没有符合答案的
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");
}
我所说的最佳,是单从时间来看的。