Senior
İş şərti: Verilən nums tam ədədlər massividir və target tam ədədi. Massivdə cəmində target olan iki ədədi tapmaq və onların indekslərini qaytarmaq lazımdır. Güvənilir ki, yalnız bir həll mövcuddur və eyni elementi iki dəfə istifadə etmək olmaz. Nümunələr: Daxil edilən: nums = [2,7,11,15], target = 9 Çıxış: [0,1]. İzah: nums[0] + nums[1] = 2 + 7 = 9 Daxil edilən: nums = [3,2,4], target = 6 Çıxış: [1,2]. İzah: nums[1] + nums[2] = 2 + 4 = 6 Daxil edilən: nums = [3,3], target = 6 Çıxış: [0,1]. İzah: nums[0] + nums[1] = 3 + 3 = 6
sobes.tech Süni İntellekt
AI-dan cavab
Для решения задачи "два числа в массиве, сумма которых равна target" можно использовать хэш-таблицу (Map) для хранения уже просмотренных чисел и их индексов. Идея в том, чтобы при обходе массива для каждого элемента проверить, есть ли в Map число, равное target минус текущий элемент. Если есть — возвращаем индексы.
Пример на Java:
import java.util.HashMap;
import java.util.Map;
public class TwoSum {
public static int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] {map.get(complement), i};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
public static void main(String[] args) {
int[] nums = {2, 7, 11, 15};
int target = 9;
int[] result = twoSum(nums, target);
System.out.println("[" + result[0] + ", " + result[1] + "]");
}
}
Такой подход работает за O(n) по времени и O(n) по памяти, что эффективно для данной задачи.