HackerRank - Equal Stacks
6130 ワード
Harker RankのEqual Stacks題です
スタックが3つある場合:
これは、すべてのスタックが同じ高さの最大高さを持つことを要求する問題です.
与えられた例では、最大高さは5です.
スタックをリストに結合します.
リスト内のすべての値が同じになるまで(minとmaxが同じになるまで)
最小のスタックを除いてスタックから1つ抽出されました
これはHackerRankのctrs 1のコードです
私のコードを比較してみます.
コアアイデアは似ていますが、ctrs 1のコードはもっと有効です.
スタックから1つ取り出すたびに、最小値が計算されます.
このコードが最小値以下になるまでポップアップします.
また、mapでsumを求める方法ももっと洗練されているようです.
質問:
スタックが3つある場合:
これは、すべてのスタックが同じ高さの最大高さを持つことを要求する問題です.
与えられた例では、最大高さは5です.
マイコード:
def equalStacks(h1, h2, h3):
# Write your code here
stacks = [h1,h2,h3]
each_sum = [sum(h1), sum(h2), sum(h3)]
while min(each_sum) != max(each_sum):
mm = min(each_sum)
for i in range(3):
if each_sum[i] == mm: continue
each_sum[i] -= stacks[i].pop(0)
return min(each_sum)
プール:
スタックをリストに結合します.
リスト内のすべての値が同じになるまで(minとmaxが同じになるまで)
最小のスタックを除いてスタックから1つ抽出されました
その他のコード:
これはHackerRankのctrs 1のコードです
def equalStacks(h1, h2, h3):
s1, s2, s3 = map(sum, (h1, h2, h3))
while h1 and h2 and h3:
m = min(s1, s2, s3)
while s1 > m: s1 -= h1.pop(0)
while s2 > m: s2 -= h2.pop(0)
while s3 > m: s3 -= h3.pop(0)
if s1 == s2 == s3: return s1
return 0
比較:
私のコードを比較してみます.
コアアイデアは似ていますが、ctrs 1のコードはもっと有効です.
スタックから1つ取り出すたびに、最小値が計算されます.
このコードが最小値以下になるまでポップアップします.
また、mapでsumを求める方法ももっと洗練されているようです.
Reference
この問題について(HackerRank - Equal Stacks), 我々は、より多くの情報をここで見つけました https://velog.io/@young221718/HackerRank-Equal-Stacksテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol