今日のLeetCode(8/18)

設問

「Kids With the Greatest Number of Candies」 [2,3,5,1,6]みたいな配列candiesと任意の値extracandiesが与えられ、 extracandiesを配列の数字にうまく分配したら、配列の各数字が配列内の最大数になるかどうか?という問題。 配列が「各子供に与えられたキャンディ」でextracandiesはそのまま「追加のキャンディ」 追加のキャンディをうまく渡して、それぞれの子供はキャンディ保持数が1位になる可能性はあるか?ということ。

私の書いたコード

class Solution:
    def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
        result = []
        sortcandies = sorted(candies, reverse=True)
        for i in candies:
            maxcandy = i + extraCandies
            result.append(maxcandy >= sortcandies[0])
        return result

最大値を取りうるかどうかだけ見ればいいので、extraCandiesをすべて渡すケースを考える。 解いたあとにして思うが、初期値が最大のやつは回す必要すらない…なぁ

ほかのコードを見て

いやまぁ大きな差はなかったけど、sortedじゃなくて普通にmaxつかってるよね…。

あと、実は詰まって調べたのが、

class Solution:
    def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
        result = []
        sortcandies = sorted(candies, reverse=True)
        for i in candies:
            maxcandy = i + extraCandies
            if maxcandy >= sortcandies[0]:
                result.append(bool('True'))
            else:
                result.append(bool('False'))
        return result

みたいなのを試しに書いたら、全部Trueになってしまうという現象が…。

どうもこれが関係ありそうなので、ちょっと明日以降も調べよう。

リストのコピーでハマった話 - Qiita