Я изучаю кучу и попробовал вопрос в hackarank.
Проблема состоит в том, чтобы найти количество раз, необходимое для достижения определенного значения K в списке. Если какое-либо значение меньше K: тогда добавляются первые два минимальных значения и вместо этих двух значений помещается новое значение.
Я закончил кодировать решение. Однако, пожалуйста, укажите любые улучшения, которые я могу сделать, чтобы код работал быстрее.
Мой код:
import heapq as heap
data = map (int, raw_input ().strip ().split ())
N, K = data [0], data [1]
cookies = map (int, raw_input ().strip ().split ())
heap.heapify (cookies)
numOps = 0
possibility = False
while cookies [0] < K:
if N == 1:
possibility = True
break
leastSweetCookies = heap.nsmallest (2, cookies)
heap.heapreplace (cookies, leastSweetCookies [0] + 2 * leastSweetCookies [1])
heap.heappop (cookies)
numOps += 1
N -= 1
if possibility == False: print numOps
else: print -1