@@ -58,13 +58,112 @@ Hence, [1,2,3] is a valid answer. Other valid answers include [1,2,4], [1,4,2],
58
58
### ** Python3**
59
59
60
60
``` python
61
-
61
+ class Solution :
62
+ def gardenNoAdj (self , n : int , paths : List[List[int ]]) -> List[int ]:
63
+ g = defaultdict(list )
64
+ for x, y in paths:
65
+ x, y = x - 1 , y - 1
66
+ g[x].append(y)
67
+ g[y].append(x)
68
+ ans = [0 ] * n
69
+ for u in range (n):
70
+ colors = set (ans[v] for v in g[u])
71
+ for c in range (1 , 5 ):
72
+ if c not in colors:
73
+ ans[u] = c
74
+ break
75
+ return ans
62
76
```
63
77
64
78
### ** Java**
65
79
66
80
``` java
81
+ class Solution {
82
+ public int [] gardenNoAdj (int n , int [][] paths ) {
83
+ List<Integer > [] g = new List [n];
84
+ for (int i = 0 ; i < n; ++ i) {
85
+ g[i] = new ArrayList<> ();
86
+ }
87
+ for (int [] p : paths) {
88
+ int x = p[0 ] - 1 , y = p[1 ] - 1 ;
89
+ g[x]. add(y);
90
+ g[y]. add(x);
91
+ }
92
+ int [] ans = new int [n];
93
+ for (int u = 0 ; u < n; ++ u) {
94
+ Set<Integer > colors = new HashSet<> ();
95
+ for (int v : g[u]) {
96
+ colors. add(ans[v]);
97
+ }
98
+ for (int c = 1 ; c < 5 ; ++ c) {
99
+ if (! colors. contains(c)) {
100
+ ans[u] = c;
101
+ break ;
102
+ }
103
+ }
104
+ }
105
+ return ans;
106
+ }
107
+ }
108
+ ```
109
+
110
+ ### ** C++**
111
+
112
+ ``` cpp
113
+ class Solution {
114
+ public:
115
+ vector<int > gardenNoAdj(int n, vector<vector<int >>& paths) {
116
+ vector<vector<int >> g(n);
117
+ for (auto& p : paths)
118
+ {
119
+ int x = p[ 0] - 1, y = p[ 1] - 1;
120
+ g[ x] .push_back(y);
121
+ g[ y] .push_back(x);
122
+ }
123
+ vector<int > ans(n);
124
+ for (int u = 0; u < n; ++u)
125
+ {
126
+ unordered_set<int > colors;
127
+ for (int v : g[ u] ) colors.insert(ans[ v] );
128
+ for (int c = 1; c < 5; ++c)
129
+ {
130
+ if (!colors.count(c))
131
+ {
132
+ ans[ u] = c;
133
+ break;
134
+ }
135
+ }
136
+ }
137
+ return ans;
138
+ }
139
+ };
140
+ ```
67
141
142
+ ### **Go**
143
+
144
+ ```go
145
+ func gardenNoAdj(n int, paths [][]int) []int {
146
+ g := make([][]int, n)
147
+ for _, p := range paths {
148
+ x, y := p[0]-1, p[1]-1
149
+ g[x] = append(g[x], y)
150
+ g[y] = append(g[y], x)
151
+ }
152
+ ans := make([]int, n)
153
+ for u := 0; u < n; u++ {
154
+ colors := make(map[int]bool)
155
+ for _, v := range g[u] {
156
+ colors[ans[v]] = true
157
+ }
158
+ for c := 1; c < 5; c++ {
159
+ if !colors[c] {
160
+ ans[u] = c
161
+ break
162
+ }
163
+ }
164
+ }
165
+ return ans
166
+ }
68
167
```
69
168
70
169
### ** ...**
0 commit comments