最初のプレイヤーがPythonでキャンディーリムーブゲームで勝つかどうかを確認するプログラム?
キャンディーと呼ばれる番号のリストがあり、誰かが友人とゲームをしているとします。各ラウンドで、プレーヤーは同じ値の2つの連続したキャンディーを取り除くことができます。そして、キャンディーを手に入れることができない人は誰でも負けて、そのplayer1が最初に開始するので、player1が勝つかどうかを確認する必要があります。
したがって、入力がnums =[2、2、5]の場合、出力はTrueになります。まるで、player1が2を選択した場合、他のプレーヤーはキャンディーを選択できません。
これを解決するには、次の手順に従います。
-
スタック:=新しいスタック
-
ターン:=0
-
numsのnumごとに、実行します
-
スタックが空でなく、スタックの最上位がnumと同じである場合、
-
スタックからポップ
-
ターン:=ターン+1
-
-
それ以外の場合
-
numをスタックにプッシュ
-
-
-
ターンが奇数の場合はtrueを返し、それ以外の場合はfalseを返します
例
class Solution: def solve(self, nums): stack = [] turns = 0 for num in nums: if stack and stack[-1] == num: stack.pop() turns += 1 else: stack.append(num) return bool(turns & 1) ob = Solution() nums = [2, 2, 5] print(ob.solve(nums))
入力
[2, 2, 5]
出力
True
-
Pythonで二分木がBSTであるかどうかをチェックするプログラム
二分木があるとしましょう。二分探索木かどうかを確認する必要があります。私たちが知っているように、BSTには次のプロパティがあります- 左側のサブツリーのすべてのノードが現在のノード値よりも小さい 右側のサブツリーのすべてのノードが現在のノード値よりも大きい これらのプロパティは、すべてのノードに対して再帰的に保持されます したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- x:=ツリー要素の順序どおりの走査シーケンスのリスト xがソートされている場合、 trueを返す falseを返す 理解を深めるために
-
与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム
無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります