Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 87b4cf0

Browse files
feet: add ts solution to lc problem: No.1001
No.1001.Grid Illumination
1 parent a71c576 commit 87b4cf0

File tree

3 files changed

+124
-0
lines changed

3 files changed

+124
-0
lines changed

‎solution/1000-1099/1001.Grid Illumination/README.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,49 @@ class Solution {
163163
}
164164
```
165165

166+
### **TypeScript**
167+
168+
```ts
169+
function gridIllumination(n: number, lamps: number[][], queries: number[][]): number[] {
170+
let lights: Set<string> = new Set();
171+
let rows: Map<number, number> = new Map(); // i
172+
let cols: Map<number, number> = new Map(); // j
173+
let mainDiagonal: Map<number, number> = new Map(); // i - j
174+
let subDiagonal: Map<number, number> = new Map(); // i + j
175+
for (let [i, j] of lamps) {
176+
let key = `${i},${j}`;
177+
if (lights.has(key)) continue;
178+
lights.add(key);
179+
rows.set(i, (rows.get(i) || 0) + 1);
180+
cols.set(j, (cols.get(j) || 0) + 1);
181+
mainDiagonal.set(i - j, (mainDiagonal.get(i - j) || 0) + 1);
182+
subDiagonal.set(i + j, (subDiagonal.get(i + j) || 0) + 1);
183+
}
184+
185+
let ans: Array<number> = [];
186+
let directions = [[-1, -1], [-1, 0], [-1, 1], [0, -1], [0, 0], [0, 1], [1, -1], [1, 0], [1, 1]];
187+
for (let [i, j] of queries) {
188+
// check
189+
const check = lights.has(`${i},${j}`) || rows.get(i) || cols.get(j) || mainDiagonal.get(i - j) || subDiagonal.get(i + j);
190+
ans.push(check ? 1 : 0);
191+
// close lamp
192+
for (let [dx, dy] of directions) {
193+
const [x, y] = [i + dx, j + dy];
194+
let key = `${x},${y}`;
195+
if (x < 0 || x > n - 1 || y < 0 || y > n - 1 || !lights.has(key)) {
196+
continue;
197+
}
198+
lights.delete(key);
199+
rows.set(x, rows.get(x) - 1);
200+
cols.set(y, cols.get(y) - 1);
201+
mainDiagonal.set(x - y, mainDiagonal.get(x - y) - 1);
202+
subDiagonal.set(x + y, subDiagonal.get(x + y) - 1);
203+
}
204+
}
205+
return ans;
206+
};
207+
```
208+
166209
### **...**
167210

168211
```

‎solution/1000-1099/1001.Grid Illumination/README_EN.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,49 @@ class Solution {
146146
}
147147
```
148148

149+
### **TypeScript**
150+
151+
```ts
152+
function gridIllumination(n: number, lamps: number[][], queries: number[][]): number[] {
153+
let lights: Set<string> = new Set();
154+
let rows: Map<number, number> = new Map(); // i
155+
let cols: Map<number, number> = new Map(); // j
156+
let mainDiagonal: Map<number, number> = new Map(); // i - j
157+
let subDiagonal: Map<number, number> = new Map(); // i + j
158+
for (let [i, j] of lamps) {
159+
let key = `${i},${j}`;
160+
if (lights.has(key)) continue;
161+
lights.add(key);
162+
rows.set(i, (rows.get(i) || 0) + 1);
163+
cols.set(j, (cols.get(j) || 0) + 1);
164+
mainDiagonal.set(i - j, (mainDiagonal.get(i - j) || 0) + 1);
165+
subDiagonal.set(i + j, (subDiagonal.get(i + j) || 0) + 1);
166+
}
167+
168+
let ans: Array<number> = [];
169+
let directions = [[-1, -1], [-1, 0], [-1, 1], [0, -1], [0, 0], [0, 1], [1, -1], [1, 0], [1, 1]];
170+
for (let [i, j] of queries) {
171+
// check
172+
const check = lights.has(`${i},${j}`) || rows.get(i) || cols.get(j) || mainDiagonal.get(i - j) || subDiagonal.get(i + j);
173+
ans.push(check ? 1 : 0);
174+
// close lamp
175+
for (let [dx, dy] of directions) {
176+
const [x, y] = [i + dx, j + dy];
177+
let key = `${x},${y}`;
178+
if (x < 0 || x > n - 1 || y < 0 || y > n - 1 || !lights.has(key)) {
179+
continue;
180+
}
181+
lights.delete(key);
182+
rows.set(x, rows.get(x) - 1);
183+
cols.set(y, cols.get(y) - 1);
184+
mainDiagonal.set(x - y, mainDiagonal.get(x - y) - 1);
185+
subDiagonal.set(x + y, subDiagonal.get(x + y) - 1);
186+
}
187+
}
188+
return ans;
189+
};
190+
```
191+
149192
### **...**
150193

151194
```
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
function gridIllumination(n: number, lamps: number[][], queries: number[][]): number[] {
2+
let lights: Set<string> = new Set();
3+
let rows: Map<number, number> = new Map(); // i
4+
let cols: Map<number, number> = new Map(); // j
5+
let mainDiagonal: Map<number, number> = new Map(); // i - j
6+
let subDiagonal: Map<number, number> = new Map(); // i + j
7+
for (let [i, j] of lamps) {
8+
let key = `${i},${j}`;
9+
if (lights.has(key)) continue;
10+
lights.add(key);
11+
rows.set(i, (rows.get(i) || 0) + 1);
12+
cols.set(j, (cols.get(j) || 0) + 1);
13+
mainDiagonal.set(i - j, (mainDiagonal.get(i - j) || 0) + 1);
14+
subDiagonal.set(i + j, (subDiagonal.get(i + j) || 0) + 1);
15+
}
16+
17+
let ans: Array<number> = [];
18+
let directions = [[-1, -1], [-1, 0], [-1, 1], [0, -1], [0, 0], [0, 1], [1, -1], [1, 0], [1, 1]];
19+
for (let [i, j] of queries) {
20+
// check
21+
const check = lights.has(`${i},${j}`) || rows.get(i) || cols.get(j) || mainDiagonal.get(i - j) || subDiagonal.get(i + j);
22+
ans.push(check ? 1 : 0);
23+
// close lamp
24+
for (let [dx, dy] of directions) {
25+
const [x, y] = [i + dx, j + dy];
26+
let key = `${x},${y}`;
27+
if (x < 0 || x > n - 1 || y < 0 || y > n - 1 || !lights.has(key)) {
28+
continue;
29+
}
30+
lights.delete(key);
31+
rows.set(x, rows.get(x) - 1);
32+
cols.set(y, cols.get(y) - 1);
33+
mainDiagonal.set(x - y, mainDiagonal.get(x - y) - 1);
34+
subDiagonal.set(x + y, subDiagonal.get(x + y) - 1);
35+
}
36+
}
37+
return ans;
38+
};

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /