Redis學習—高可用之Redis-Cluster叢集
阿新 • • 發佈:2020-12-21
技術標籤:資料結構與演算法搜尋演算法dfs演算法leetcodepython
題目描述:班上有 N 名學生。其中有些人是朋友,有些則不是。他們的友誼具有是傳遞性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那麼我們可以認為 A 也是 C 的朋友。所謂的朋友圈,是指所有朋友的集合。
給定一個 N * N 的矩陣 M,表示班級中學生之間的朋友關係。如果M[i][j] = 1,表示已知第 i 個和 j 個學生互為朋友關係,否則為不知道。你必須輸出所有學生中的已知的朋友圈總數。
解題思路:搞清楚這個矩陣表示的圖的節點和邊即可,然後迴圈呼叫dfs即可
class Solution:
def findCircleNum(self, M: List[List[int]]) -> int:
n = len(M)
if n == 0: return 0
res = 0
def dfs(i):
M[i][i] = 0
for j in range(n):
if M[i][j] and M[j][j]:
dfs(j)
for i in range(n):
if M[i][ i]:
res += 1
dfs(i)
return res