Решаем задачу с leetcode на #Golang

- наш канал Задача: Найти два числа в отсортированном массиве, сумма которых равна целевому значению. Описание: Дан отсортированный массив целых чисел nums и целевое значение target. Ваша задача - найти два числа в массиве, сумма которых равна target, и вернуть их индексы в виде массива. Пример: Ввод: nums = [2, 7, 11, 15], target =22 Вывод: [1, 3] Решение: Мы можем использовать алгоритм двух указателей для решения этой задачи. У нас будет указатель “left“, указывающий на первый элемент массива, и указатель “right“, указывающий на последний элемент массива. Мы будем сравнивать сумму nums[left] nums[right] с целевым значением target. Если сумма равна target, мы вернем индексы left и right. Если сумма меньше target, мы увеличим left, чтобы увеличить сумму. Если сумма больше target, мы уменьшим right, чтобы уменьшить сумму. Мы продолжим этот процесс, пока указатели не встретятся (левый указатель не станет больше или равен правому). Если мы не найдем два числа сумма которых равна target, мы вернем пустой массив. Вот реализация на языке Go: package main import “fmt“ func twoSum(nums []int, target int) []int { left := 0 right := len(nums) - 1 for left < right { sum := nums[left] nums[right] if sum == target { return []int{left, right} } else if sum < target { left } else { right-- } } return []int{} // Если пара чисел не найдена } func main() { nums := []int{2, 7, 11, 15} target := 22 result := twoSum(nums, target) (result) // Выведет: [1, 3] } В этом коде мы объявляем функцию twoSum, которая принимает отсортированный массив чисел nums и целевое значение target. Функция ищет два числа в массиве, сумма которых равна target, и возвращает их индексы в виде массива. Затем в функции main мы создаем массив nums и переменную target, вызываем функцию twoSum с этими значениями и выводим результат на экран. При выполнении кода, он выведет массив [1, 3], что означает, что числа в индексах 7 и 15 массива [2, 7, 11, 15] дают сумму, равную 22.
Back to Top