LeetCode--1042. 不鄰接植花
——————————————————————————————————————————————————————
把花的種類當成顏色進行染色。
import java.util.Arrays;
class Solution {
int N, M;//頂點數,邊數
int[] h;
int[] e;
int[] ne;
int idx;
int[] color;//color[i]:頂點i的顏色,i從1開始
int[] res;//返回的最終結果
public int[] gardenNoAdj(int n, int[][] paths) {
N = n;
M = paths.length;
h = new int[N + 10];
color = new int[N + 10];
res = new int[n];
e = new int[2 * M + 10];//無向圖,預留兩倍的邊數
ne = new int[2 * M + 10];
Arrays.fill(h, -1);
for (int i = 0; i < paths.length; i++) {
int a = paths[i][0];
int b = paths[i][1];
add(a, b);
add(b, a);
}
for (int i = 1; i <= n; i++) {//挨個遍歷頂點i
boolean[] used = new boolean[5];//used[i]表示顏色i被用過了
for (int j = h[i]; j != -1; j = ne[j]) {//遍歷頂點i的鄰居
int k = e[j];
//System.out.println(i + "的鄰居:" + k);
used[color[k]] = true;//將頂點i所有鄰居的顏色標記為已使用
}
for (int c = 1; c <= 4; c++) {//從沒使用的顏色中挑一個給頂點i塗上
if (!used[c]) {
color[i] = c;
used[c] = true;
}
}
}
for (int i = 1; i <= n; i++) {//下標從1開始轉為下標從0開始
res[i - 1] = color[i];
}
return res;
}
private void add(int a, int b) {
e[idx] = b;
ne[idx] = h[a];
h[a] = idx++;
}
}
相關文章
- 鄰接表
- windows10系統打不開網路上的芳鄰如何解決Windows
- K近鄰模型模型
- C#實現圖的鄰接矩陣和鄰接表結構C#矩陣
- 第6章 圖的學習總結(鄰接矩陣&鄰接表)矩陣
- 14、圖-鄰接矩陣矩陣
- K近鄰演算法演算法
- K - 近鄰演算法演算法
- Phobos勒索熱度不減,繞過殺軟花樣百出
- 啥?你的 Tap bar 不夠花裡胡哨,試試這個!
- 11、BGP鄰居震盪抑制
- 鄰接矩陣、度矩陣矩陣
- k-近鄰演算法演算法
- 【系統設計】鄰近服務
- CSS 獲取所有緊鄰兄弟元素CSS
- CSS 緊鄰下一個兄弟元素CSS
- K-鄰近均值演算法演算法
- K-最近鄰法(KNN)簡介KNN
- 相鄰兩數的最大差值
- 機器學習——KNN(K近鄰)機器學習KNN
- 企業資訊化建設,花小錢匯入開源ERP不香嗎?
- 程式語言簡史:有人不喜歡花括號,於是他發明了PythonPython
- 2024.11.26 鮮花
- 11.17 鮮花
- 2024.11.20 鮮花
- 2024.11.8 鮮花
- 10.23鮮花
- 2024.11.3 鮮花
- 2024.10.24 鮮花
- 2024.10.22 鮮花
- 10.7鮮花
- 10.9 鮮花
- [鮮花] ..x?.
- 鮮花 #3
- 鮮花 #2
- 鮮花 大道
- 2024.8.11 鮮花
- 鮮花 黑夜