当我尝试查找总数等于目标数的唯一对的索引时,我想出了这段代码。对于该解决方案,时间复杂度和空间复杂度都是O(n)。有没有其他有效的方法来解决它?或者这个问题的后续问题是什么?
public static ArrayList<int[]> findingTwoSum(int arr[], int target){
if (arr == null || arr.length < 1){
throw new IllegalArgumentException();
}
HashMap<Integer, Integer> map = new HashMap<>();
ArrayList<int[]> result = new ArrayList<>();
for (int i = 0 ; i < arr.length ; i++){
if (!map.containsKey(arr[i])){
map.put(target-arr[i], i);
}
else{
if(!result.contains(map.get(arr[i]))){
result.add(new int[]{i,map.get(arr[i])});
}
}
}
return result;
}