MyTetra Share
Делитесь знаниями!
Задача Two Sum
Время создания: 15.11.2023 11:12
Автор: Xintrea
Текстовые метки: leetcode, спортивное, программирование, алгоритм, алгоритмическая секция, интервью, собеседование, подготовка
Раздел: Компьютер - Программирование - Алгоритмы - Решение задач LeetCode.com
Запись: xintrea/mytetra_syncro/master/base/1700035959djqgf62hku/text.html на raw.github.com

Здесь я пишу объяснения своих решений для рекомендованного пула задач на сайте LeetCode.com.



Two Sum


Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.


Example 1:

Input: nums = [2,7,11,15], target = 9

Output: [0,1]

Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6

Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6

Output: [0,1]


Решение:



class Solution:

def twoSum(self, nums: List[int], target: int) -> List[int]:

for i in range(len(nums)-1):

for j in range(i+1, len(nums)):

# if i==j:

# continue

if nums[i]+nums[j]==target:

return [i, j]

return [0, 0]



Пояснения:


В задаче Two Sum перебираются пары значений с индексом i и j

во вложенном цикле, чтобы сравнить все возможные пары значений.

По сути, i и j пробегают один и тот же диапазон, равный длинне массива.


Чтобы пары не повторялись, достаточно только условия продолжать перебор

если i==j, не проверяя значение, потому что нельзя сравнивать элемент сам с собой.


Однако, вместо этого условия можно внутренний цикл по j начинать не с i,

а с i+1, чтобы уменьшить пересечения индексов, и внешний цикл так же можно

заканчивать не на последнем элементе, а на предпоследнем len(nums)-1,

и тогда пересечения индексов вообще не будет, и условие проверки i==j можно

вообще убрать.



 
MyTetra Share v.0.59
Яндекс индекс цитирования