-
Notifications
You must be signed in to change notification settings - Fork 0
/
the_two-pointer_method.py
29 lines (27 loc) · 1.66 KB
/
the_two-pointer_method.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def find_two_indexes(data, expected_result):
# В начале работы
# - левый указатель указывает на первый элемент списка (с индексом 0):
left_pointer = 0
# - правый указатель указывает на последний элемент списка.
# Индекс этого элемента на единицу меньше длины списка.
right_pointer = len(data) - 1
# Пока индекс левого указателя меньше индекса правого указателя.
while left_pointer < right_pointer:
# Считаем сумму двух элементов.
summ = data[left_pointer] + data[right_pointer]
# Если она совпадает с искомой...
if summ == expected_result:
# ...возвращаем ответ:
return left_pointer, right_pointer
# Если сумма больше искомой, то...
elif summ > expected_result:
# ...надо уменьшить сумму: уменьшаем значение правого указателя.
right_pointer -= 1
# Все остальные варианты относятся к случаям, когда сумма меньше искомой.
else:
# Сумму надо увеличить, для этого увеличиваем значение левого указателя.
left_pointer += 1
if __name__ == '__main__':
data = [1, 2, 3, 4, 5, 6, 7, 11]
expected_result = 10
print(find_two_indexes(data, expected_result))