題目鏈結
題目描述
有 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]
題目分析
根據問題描述,可以使用廣度優先搜尋和深度優先搜尋演算法。
下面**使用廣度優先搜尋的思想。
實現方式是遞迴。
依次遍歷和上乙個結點連線的結點。
遍歷過的結點做標記(arr)。
直到每個結點都遍歷過為止。
**
class solution }}
int findcirclenum(vector>& isconnected)
}return sum;
}};
用時81min(首先嘗試使用迴圈實現,失敗。改為遞迴實現) 力扣刷題系列
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。從中學知識知道,如果需要求一組數字的中位數,那麼先要從小到大排列這些數字。接著,如果總共有奇數個...
刷題 力扣 119
題目鏈結 題目描述 給定乙個非負索引 k,其中 k 33,返回楊輝三角的第 k 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 3 輸出 1,3,3,1 高階 題目分析 根據題目描述楊輝三角形每一行從左到右依次是 組合 combiner是用來計算組合的結果 依次遍歷每一行從左到右 c...
刷題 力扣 665
題目鏈結 題目描述 給你乙個長度為 n 的整數陣列,請你判斷在 最多 改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。我們是這樣定義乙個非遞減數列的 對於陣列中所有的 i 0 i n 2 總滿足 nums i nums i 1 示例 1 輸入 nums 4,2,3 輸出 true 解釋 你可...