n^2の解法
public int[] twoSum(int[] nums, int target) {
long targetLong = target;
int[] ans = new int[2];
for (int i = 0; i < nums.length-1; i++) {
for (int j = i + 1; j < nums.length; j++) {
if(nums[i] + nums[j] == targetLong) {
ans[0] = i;
ans[1] = j;
}
}
}
return ans;
}
nの解法
今回のように(同一配列の)二つの要素を組み合わせるにはHashMapがいいのかもしれない。
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> hash = new HashMap<>();
for (int i = 0 ; i < nums.length; i++) {
int complement = target - nums[i];
if(hash.containsKey(complement)) {
return new int[] {hash.get(complement), i};
}
hash.put(nums[i], i);
}
throw new IllegalArgumentException();
}
学んだことを簡単にまとめているだけなので悪しからず。