Pythonの一連の友達接続で友達グループの数を見つけるプログラム
友達リストがあるとします。ここで、friends[i]は私が友達である人々のリストです。友情のつながりは双方向です。そして、それぞれの人は自分自身と友達であり、2人の人は、お互いをつなぐ相互の友達の道がある限り、友達グループに属します。友達グループの総数を見つける必要があります。
したがって、入力がfriends =[[0、1、5]、[1、0]、[2]、[3、4]、[4、3]、[5、0]]の場合、出力は3つの友達グループは以下のとおりです-
これを解決するには、次の手順に従います-
- ノード:=友達のサイズ
- 訪問:=ノードと同じサイズのリストでFalseで埋める
- ans:=0
- 関数dfs()を定義します。これは頂点を取り、訪問します
- visited [vertex]:=True
- フレンズ[頂点]の各neiについて、
- visited [nei]がfalseの場合、
- dfs(nei、visited)
- visited [nei]がfalseの場合、
- メインの方法から、次の手順を実行します-
- ノードまでの範囲が0のiの場合は、
- visited [i]がfalseの場合、
- dfs(i、訪問済み)
- ans:=ans + 1
- visited [i]がfalseの場合、
- 回答を返す
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, friends): nodes = len(friends) visited = [False for _ in range(nodes)] ans = 0 def dfs(vertex, visited): visited[vertex] = True for nei in friends[vertex]: if not visited[nei]: dfs(nei, visited) for i in range(nodes): if not visited[i]: dfs(i, visited) ans += 1 return ans ob = Solution() friends = [ [0, 1, 5], [1, 0], [2], [3, 4], [4, 3], [5, 0] ] print(ob.solve(friends))
入力
[[0, 1, 5], [1, 0], [2], [3, 4], [4, 3], [5, 0] ]
出力
3
-
Pythonで範囲内のノード数を見つけるプログラム
BSTがあり、左と右の境界lとrもあるとすると、lとrの間に値が存在するルート内のすべてのノードの数を見つける必要があります。 したがって、入力が次のような場合 l =7、r =13の場合、8、10、12の3つのノードがあるため、出力は3になります。 これを解決するために、次の手順に従います- スタック:=スタックと最初にルートを挿入し、カウント:=0 スタックが空でないときに、実行します node:=スタックの最上位要素、およびポップ要素 ノードがnullでない場合、 l<=ノードのデータ<=rの場合、 count:=count + 1
-
リスト内の最小数を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal