n 座城市和一些連線這些城市的道路 roads 共同組成乙個基礎設施網路。每個 roads[i] = [ai, bi] 都表示在城市 ai 和 bi 之間有一條雙向道路。
兩座不同城市構成的 城市對 的 網路秩 定義為:與這兩座城市 直接 相連的道路總數。如果存在一條道路直接連線這兩座城市,則這條道路只計算 一次 。
整個基礎設施網路的 最大網路秩 是所有不同城市對中的 最大網路秩 。
給你整數 n 和陣列 roads,返回整個基礎設施網路的 最大網路秩 。
示例 1:
輸入:n = 4, roads = [[0,1],[0,3],[1,2],[1,3]]
輸出:4
解釋:城市 0 和 1 的網路秩是 4,因為共有 4 條道路與城市 0 或 1 相連。位於 0 和 1 之間的道路只計算一次。
示例 2:
輸入:n = 5, roads = [[0,1],[0,3],[1,2],[1,3],[2,3],[2,4]]
輸出:5
解釋:共有 5 條道路與城市 1 或 2 相連。
示例 3:
輸入:n = 8, roads = [[0,1],[1,2],[2,3],[2,4],[5,6],[5,7]]
輸出:5
解釋:2 和 5 的網路秩為 5,注意並非所有的城市都需要連線起來。
2 <= n <= 100
0 <= roads.length <= n * (n - 1) / 2
roads[i].length == 2
0 <= ai, bi <= n-1
ai != bi
每對城市之間 最多只有一條 道路相連
先遍歷一遍找到所有節點的邊數
然後再遍歷一遍找到最多和次多邊數的節點集合
然後遍歷集合
class
solution
:def
maximalnetworkrank
(self, n:
int, roads: list[list[
int]])
->
int:
ans =[0
]*105 m1 =
0 m1 =
0 d1 =
d2 =
for i in roads:
ans[i[0]
]+=1 ans[i[1]
]+=1for i in
range
(n):
if ans[i]
>= m1:
m2 = m1
m1 = ans[i]
elif ans[i]
> m2:
m2 = ans[i]
for i in
range
(n):
if ans[i]
== m1:
if ans[i]
== m2:
maxx =
0for x in d1:
for y in d2:
if x!=y:if(
[x,y]
in roads)or(
[y,x]
in roads)
:if ans[x]
+ans[y]-1
>maxx:
maxx = ans[x]
+ans[y]-1
else
:if ans[x]
+ans[y]
>maxx:
maxx = ans[x]
+ans[y]
return maxx
Leetcode千題 1 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...
Leetcode千題 968 兩數之和
給定乙個二叉樹,我們在樹的節點上安裝攝像頭。節點上的每個攝影頭都可以監視其父物件 自身及其直接子物件。計算監控樹的所有節點所需的最小攝像頭數量。首先要表示節點的狀態flag 沒有被覆蓋 0,被覆蓋 1,裝了攝像頭 2。可以用遞迴的形式,也可以根據貪心,看兩個字節點的情況。class solution...
leetcode千題 771 寶石與石頭
給定字串j 代表石頭中寶石的型別,和字串 s代表你擁有的石頭。s 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j 中的字母不重複,j 和 s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 3...