Я пытаюсь вернуть массив из оператора else, но он не работает.
Вот проблема, которую я пытаюсь решить.
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
Это решение не 't работает и возвращает {0,10}
class Solution {
public int[] twoSum(int[] nums, int target) {
if(nums.length == 0) return null;
int[] numss = {0, 10};
HashMap<Integer, Integer> s = new HashMap<Integer, Integer>();
for(int i = 0; i < nums.length; i++) {
if(s.getOrDefault(nums[i], 0) == 0) {
s.put(target-nums[i], i);
}
else {
numss[0] = i;
numss[1] = s.get(nums[i]);
return numss;
}
}
return numss;
}
}
Это решение работает (только то, что оценивает оператор if, оценивается ниже)
class Solution {
public int[] twoSum(int[] nums, int target) {
if(nums.length == 0) return null;
int[] numss = {0, 10};
HashMap<Integer, Integer> s = new HashMap<Integer, Integer>();
for(int i = 0; i < nums.length; i++) {
if(s.getOrDefault(nums[i], -1) == -1) {
s.put(target-nums[i], i);
}
else {
numss[0] = i;
numss[1] = s.get(nums[i]);
return numss;
}
}
return numss;
}
}
Это решение работает
class Solution {
public int[] twoSum(int[] nums, int target) {
if(nums.length == 0) return null;
HashMap<Integer, Integer> s = new HashMap<Integer, Integer>();
for(int i = 0; i < nums.length; i++) {
if(s.getOrDefault(nums[i], -1) != -1) {
return new int[]{ i, s.get(nums[i]) };
}
s.put(target - nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
Почему мой оператор else не может вернуть массив и остановить функцию или, по-видимому, оператор if-else не работает даже должным образом?