547. 省份數量
有n
個城市,其中一些彼此相連,另一些沒有相連。如果城市a
與城市b
直接相連,且城市b
與城市c
直接相連,那麼城市a
與城市c
間接相連。
省份是一組直接或間接相連的城市,組內不含其他沒有相連的城市。
給你乙個n x n
的矩陣isconnected
,其中isconnected[i][j] = 1
表示第i
個城市和第j
個城市直接相連,而isconnected[i][j] = 0
表示二者不直接相連。
返回矩陣中省份的數量。
示例 1:
輸入:isconnected = [[1,1,0],[1,1,0],[0,0,1]]
輸出:2
示例 2:
輸入:isconnected = [[1,0,0],[0,1,0],[0,0,1]]
輸出:3
1 <= n <= 200
n == isconnected.length
n == isconnected[i].length
isconnected[i][j] 為 1 或 0
isconnected[i][i] == 1
isconnected[i][j] == isconnected[j][i]
class solution
// return i;
// }
// void lian(vector&gen,int i,int j)
// else gen[i] = j;
// }
};
class solution(object):
def findcirclenum(self, isconnected):
""":type isconnected: list[list[int]]
:rtype: int
"""# 廣度優先搜尋
province = len(isconnected)
visit = [false for i in range(province)]
# print(visit)
que =
count =0
# count 記錄城市群的個數
for i in range(province):
# 如果該城市沒有訪問
if visit[i]==false:
# 把該城市加入到列表中
while len(que)!=0:
# 訪問該城市,並把該城市從列表中刪除
tempi = que.pop()
visit[tempi]= true
for j in range(province):
# 把與當前訪問並且連通的城市加入到佇列中,且此城市還沒有被訪問
if isconnected[tempi][j]==1 and visit[j]==false:
count+=1
return count
深度優先遍歷 遞迴 深度優先搜尋和廣度優先搜尋
對於搜尋來說,我們絕大多數情況下處理的都是叫 所謂的暴力搜尋 或者是說比較簡單樸素的搜尋,也就是說你在搜尋的時候沒有任何所謂的智慧型的情況在裡面考慮,很多情況下它做的一件事情就是把所有的結點全部遍歷一次,然後找到你要的結果。基於這樣的乙個資料結構,如果這個資料結構本身是沒有任何特點的,也就是說是乙個...
廣度優先搜尋 深度優先搜尋
前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...
廣度優先搜尋,深度優先搜尋
深度優先搜尋 depth first search 簡稱dfs。最直觀的例子就是 走迷宮 廣度優先搜尋 每個頂點都要進出一遍佇列,每個邊也都會被訪問一次,所以 時間複雜度o v e 主要消耗記憶體的是visited prev陣列 queue佇列,所以 空間複雜度o v 深度優先搜尋 每條邊最多會被訪...