今日の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になってしまうという現象が…。
どうもこれが関係ありそうなので、ちょっと明日以降も調べよう。