Pythonで全員が席に着くことができるかどうかをチェックするプログラム
番号nがあり、座席を検索している人がn人いるとすると、ビットのリストもあります。ここで、1はすでに占有されている座席を表し、0は空いている座席を表します。 2人が隣同士に座ることはできないので、n人全員が席を見つけることができるかどうかを確認する必要があります。
したがって、入力がn =2シート=[1、0、0、0、1、0、0]の場合、インデックス2と6にシートできるため、出力はTrueになります。
これを解決するには、次の手順に従います-
- 座席の先頭に0を挿入し、座席の末尾に[0、1]を挿入します
- res:=0、gap:=0
- 座席のiごとに、
- iが0と同じ場合、
- ギャップ:=ギャップ+1
- それ以外の場合、ギャップ> 0の場合、
- res:=res +(gap-1)/2のフロア
- ギャップ:=0
- iが0と同じ場合、
- res> =nの場合はtrueを返し、それ以外の場合はfalseを返します
例
理解を深めるために、次の実装を見てみましょう-
def solve(n, seats): seats = [0] + seats + [0, 1] res = 0 gap = 0 for i in seats: if i == 0: gap += 1 elif gap > 0: res += (gap - 1) // 2 gap = 0 return res >= n n = 2 seats = [1, 0, 0, 0, 1, 0, 0] print(solve(n, seats))
入力
2, [1, 0, 0, 0, 1, 0, 0]
出力
True
-
Pythonでノードを交換することで2つのツリーを形成できるかどうかを確認するプログラム
2つのツリーがあるとすると、ノードの左右のサブツリーを何度でも交換して、最初のツリーを2番目のツリーに変換できるかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- que1:=最初はroot0のキュー que2:=最初はroot1のキュー que1とque2は空ではありませんが、実行してください temp1:=新しいリスト、temp2:=新しいリスト values1:=新しいリスト、values2:=新しいリスト que1とque2に含まれる要素の数が
-
与えられたグラフが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()を定義します。これはソースを取ります