HackerRank - Jesse and Cookies
2871 ワード
これはHackerRankのJesse and Cookies題です.
整数kとlist A.
リストAのすべての要素がk以上になるまで
最小の要素と2番目の小さい要素を除去します.
(最小要素+2*2番目の小要素)をリストに追加します.
リスト内のすべての要素がkより大きい場合、追加された値の数が返されます.
不可能な場合は、-1を返します.
heapqで解いたんだ
heapqは、リストを常に小さな値の前にするデータ構造です.
Aの長さが1より大きいか、Aの最小値(A[0])がkより小さいことを簡単に繰り返す.
while文が終了すると、a[0]がkより大きい場合、step(while文を巡る回数)が返されます.
または-1を返します.
質問:
整数kとlist A.
リストAのすべての要素がk以上になるまで
最小の要素と2番目の小さい要素を除去します.
(最小要素+2*2番目の小要素)をリストに追加します.
リスト内のすべての要素がkより大きい場合、追加された値の数が返されます.
不可能な場合は、-1を返します.
コード:
def cookies(k, A):
# Write your code here
heapq.heapify(A)
step = 0
while len(A) > 1 and A[0] < k:
first = heapq.heappop(A)
second = heapq.heappop(A)
heapq.heappush(A,first + second*2)
step += 1
if A[0] >= k: return step
else: return -1
プール:
heapqで解いたんだ
heapqは、リストを常に小さな値の前にするデータ構造です.
Aの長さが1より大きいか、Aの最小値(A[0])がkより小さいことを簡単に繰り返す.
while文が終了すると、a[0]がkより大きい場合、step(while文を巡る回数)が返されます.
または-1を返します.
Reference
この問題について(HackerRank - Jesse and Cookies), 我々は、より多くの情報をここで見つけました https://velog.io/@young221718/HackerRank-Jesse-and-Cookiesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol