В коде, который вы предоставили, есть несколько ошибок: В методе twoSum_ отсутствует закрывающая фигурная скобка после цикла for, а также открывающая скобка после int[] nums, int target}. Кроме того, в строке public int[] twoSum_(int[] nums, int target){ перед int[] должен быть пробел. В методе twoSum_ отсутствует возврат массива в случае нахождения решения. Вместо этого выбрасывается исключение. В методе containsDuplicate отсутствует закрывающая фигурная скобка после условия if (set.contains(num)). В методе containsDuplicate в случае нахождения дубликата элемента возвращается true, но в случае отсутствия дубликата возвращается false до того, как элемент будет добавлен в множество. Необходимо поменять местами эти две строки. В строке import static jdk.internal.org .jline.utils.Colors.s; пробел между org и .jline может вызвать ошибку. Чтобы исправить эти ошибки, необходимо: Добавить закрывающую фигурную скобку после цикла for и открывающую скобку после int[] nums, int target}. Также добавить пробел перед int[]. В случае нахождения решения в методе twoSum_ вернуть массив, содержащий индексы элементов, сумма которых равна target. Добавить закрывающую фигурную скобку после условия if (set.contains(num)). Поменять местами строки, возвращающие true и false в методе containsDuplicate. Убрать пробел между org и .jline.
Исправленный код будет выглядеть так: import java.util.*;
public class Main {
public static void main(String[] args) {
}
public static int[] twoSum(int[] nums, int target) {
HashMap map = new HashMap();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums;
if (map.containsKey(complement)) {
return new int[]{map.get(complement), i};
}
map.put(nums, i);
}
throw new IllegalArgumentException("No two sum solution");
}
public static boolean containsDuplicate(int[] nums) {
HashSet set = new HashSet();
for (int num : nums) {
if (set.contains(num)) {
return true;
}
set.add(num);
}
return false;
}
}