кодесурса
«Python

Python: найти уникальные триплеты, три элемента которых дают сумму нуля из массива из n целых чисел

script1adsense2code
script1adsense3code

Python Basic - 1: Упражнение 4 с решением

Напишите программу на Python, чтобы найти уникальные триплеты, три элемента которых дают сумму нуля из массива из n целых чисел.

Иллюстрированная презентация:

«Python:

Пример решения :

Код Python:

def three_sum(nums):
  result = []
  nums.sort()
  for i in range(len(nums)-2):
    if i> 0 and nums[i] == nums[i-1]:
      continue
    l, r = i+1, len(nums)-1
    while l < r:
      s = nums[i] + nums[l] + nums[r]
      if s > 0:
        r -= 1
      elif s < 0:
          l += 1
      else:
        # found three sum
        result.append((nums[i], nums[l], nums[r]))
        # remove duplicates
        while l < r and nums[l] == nums[l+1]:
          l+=1
          while l < r and nums[r] == nums[r-1]:
            r -= 1
            l += 1
            r -= 1
          return result
x = [1, -6, 4, 2, -1, 2, 0, -2, 0 ]
print(three_sum(x))

Пример вывода:

 [(-6, 2, 4)]

Блок - схема:

«Блок-схема:

Визуализируйте выполнение кода Python:

Следующий инструмент визуализирует, что компьютер делает шаг за шагом при выполнении указанной программы:

Редактор кода Python:

Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.

Предыдущий: Напишите программу на Python для удаления и печати каждого третьего числа из списка чисел, пока список не станет пустым.
Далее: Напишите программу на Python для создания комбинаций из трехзначного комбо.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code