Senior
39
/** * Երկու թիվ որոնել զանգվածում, որոնց գումարը հավասար է տրված թվին * <p> * Գրեք ֆունկցիա, որը որպես առաջին արգումենտ ընդունում է դրական * ոչ դասավորված թվերի զանգված * և որպես երկրորդ արգումենտ՝ դրական թիվ: * Ֆունկցիան պետք է վերադարձնի true, եթե զանգվածում * կա 2 թիվ, որոնց գումարը հավասար է երկրորդ արգումենտին: * <p> * Ներմուծում: ([10, 15, 3, 7], 17) * Արտածում: true */
Ընկերությունները, որտեղ հարցրել են
Պատասխան AI-ից
sobes.tech AI
java public class TwoSum { public static boolean hasTwoSum(int[] nums, int target) { Set<Integer> complements = new HashSet<>(); for (int num : nums) { if (complements.contains(num)) { return true; } complements.add(target - num); } return false; }
public static void main(String[] args) {
int[] arr = {10, 15, 3, 7};
int target = 17;
System.out.println(hasTwoSum(arr, target)); // true
}
}
Функция `hasTwoSum` использует множество для хранения "дополняющих" чисел, которые нужны, чтобы в сумме получить `target`. При проходе по массиву, если текущее число есть в множестве, значит найдено два числа, сумма которых равна `target`. Это решение работает за O(n) по времени и O(n) по памяти.