20210107 省份數量

2022-06-20 04:21:09 字數 1310 閱讀 8796

有 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]]

public int findcirclenum(int isconnected) 

思路1:

定義 int c=isconnected.length;

當乙個省份和另乙個省份相連 就可以把這兩個省份當成乙個省份 同時c-- 把後乙個省份定義的1改為0

直到所有陣列中沒有省份相連時(即陣列中1的值只有1個時)丟擲c

思路錯誤 因為關聯到時值置0的省份可能會被後面的陣列再次關聯到

public

int findcirclenum(int

isconnected)

if(num>1)}}

}return

cd; }

思路2:

將陣列按順序相加 值為1的是沒被關聯的 大於1的是被關聯的 陣列長度減取值為1的個數即是輸出

思路錯誤

public

static

int findcirclenum2(int

isconnected)

s.add(num);

if (num==1)

}if (s.size()==1&&s.contains(1))

return

res1;

}

思路3定義個listset存放各個省份關聯的值,如[1,1,0] set中就放1,2 

list就是每個省份關聯的集合

若[1,1,0][0,1,1] 那麼都放到同乙個set中 即set存1,2,3

list的個數就是res

官方

public

int findcirclenum(int

isconnected) }}

circles++;}}

return

circles;

}

547 省份數量

有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個 n x n 的矩陣 isconnected 其中 isconnected...

leetcode 省份數量

有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個 n x n 的矩陣 isconnected 其中 isconnected...

547 省份數量

有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個 n x n 的矩陣 isconnected 其中 isconnected...