有 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的個數即是輸出
思路錯誤
publicstatic
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
官方
publicint 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...