はじめに
LeetCodeの問題を解答します。
なるべく、問題の和訳と詳細なコメントを書いています。
余裕があれば、複数のアプローチの解答と、実際の面接を想定して英語での解法やコメントを書いています。
様々なカテゴリの問題をランダムにあたる方法も良いですが、
二分探索、連結リストなど、テーマを絞って集中的に解いた方が練習しやすい方は以下の記事が有用です。
テーマごとに問題を分類しました。
LeeetCodeの問題をアルゴリズムとデータ構造による分類しました。
また、LeetCodeではAtcoderと違ってクラスと関数を定義して解答します。
LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめています。
はじめてLeetCodeに触れる方はこちらの記事も役に立つと思います。
詳細
問題
原文
There are
n
kids with candies. You are given an integer arraycandies
, where eachcandies[i]
represents the number of candies theith
kid has, and an integerextraCandies
, denoting the number of extra candies that you have.Return a boolean array
result
of lengthn
, whereresult[i]
istrue
if, after giving theith
kid all theextraCandies
, they will have the greatest number of candies among all the kids, orfalse
otherwise.Note that multiple kids can have the greatest number of candies.
Example 1:
12345678 Input: candies = [2,3,5,1,3], extraCandies = 3Output: [true,true,true,false,true]Explanation: If you give all extraCandies to:- Kid 1, they will have 2 + 3 = 5 candies, which is the greatest among the kids.- Kid 2, they will have 3 + 3 = 6 candies, which is the greatest among the kids.- Kid 3, they will have 5 + 3 = 8 candies, which is the greatest among the kids.- Kid 4, they will have 1 + 3 = 4 candies, which is not the greatest among the kids.- Kid 5, they will have 3 + 3 = 6 candies, which is the greatest among the kids.Example 2:
1234 Input: candies = [4,2,1,1,2], extraCandies = 1Output: [true,false,false,false,false]Explanation: There is only 1 extra candy.Kid 1 will always have the greatest number of candies, even if a different kid is given the extra candy.Example 3:
12 Input: candies = [12,1,12], extraCandies = 10Output: [true,false,true]
Constraints:
n == candies.length
2 <= n <= 100
1 <= candies[i] <= 100
1 <= extraCandies <= 50
内容(和訳)
n 人の子供がキャンディーを持っています。整数の配列 candies が与えられ、各 candies[i] は i 番目の子供が持っているキャンディーの数を表し、extraCandies はあなたが持っている余分なキャンディーの数を表します。
長さ n の論理配列 result を返します。result[i] は、i 番目の子供にすべての extraCandies を与えると、すべての子供の中で最も多くのキャンディーを持つことになる場合、true を返し、そうでない場合は false を返します。
注意:複数の子供が最も多くのキャンディーを持つことができます。
※Bardによる翻訳
解答
解答1:Python
1 2 3 4 5 6 7 8 9 10 |
class Solution: def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]: answer = [] max_number = max(candies) for i in candies: if i+extraCandies>=max_number: answer.append(True) else: answer.append(False) return answer |
最大値を最初に取得しておき、candiesのリスト内の各要素を対象に以下の処理を行います。
extraCandiesの個数との合計が最大値以上となればTrueそれ以外はFalseを戻り値用のリストに加える。
終わりに
補足・参考・感想
問題を分類しました。テーマごとに集中して問題を解くことができます。
LeeetCodeの問題をアルゴリズムとデータ構造による分類
LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめました。
疑問が解決した方は他の問題もどうぞ
前:1071. Greatest Common Divisor of Strings
次:151. Reverse Words in a String
コメント