Skip to content

Commit 5740163

Browse files
committedApr 29, 2022
feat: add solutions to lc problem: No.0361
No.0361.Bomb Enemy
1 parent 0438945 commit 5740163

File tree

6 files changed

+609
-2
lines changed

6 files changed

+609
-2
lines changed
 

‎solution/0300-0399/0361.Bomb Enemy/README.md

+206-1
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,220 @@
5656
<!-- 这里可写当前语言的特殊实现逻辑 -->
5757

5858
```python
59-
59+
class Solution:
60+
def maxKilledEnemies(self, grid: List[List[str]]) -> int:
61+
m, n = len(grid), len(grid[0])
62+
g = [[0] * n for _ in range(m)]
63+
for i in range(m):
64+
t = 0
65+
for j in range(n):
66+
if grid[i][j] == 'W':
67+
t = 0
68+
elif grid[i][j] == 'E':
69+
t += 1
70+
g[i][j] += t
71+
t = 0
72+
for j in range(n - 1, -1, -1):
73+
if grid[i][j] == 'W':
74+
t = 0
75+
elif grid[i][j] == 'E':
76+
t += 1
77+
g[i][j] += t
78+
for j in range(n):
79+
t = 0
80+
for i in range(m):
81+
if grid[i][j] == 'W':
82+
t = 0
83+
elif grid[i][j] == 'E':
84+
t += 1
85+
g[i][j] += t
86+
t = 0
87+
for i in range(m - 1, -1, -1):
88+
if grid[i][j] == 'W':
89+
t = 0
90+
elif grid[i][j] == 'E':
91+
t += 1
92+
g[i][j] += t
93+
return max([g[i][j] for i in range(m) for j in range(n) if grid[i][j] == '0'], default=0)
6094
```
6195

6296
### **Java**
6397

6498
<!-- 这里可写当前语言的特殊实现逻辑 -->
6599

66100
```java
101+
class Solution {
102+
public int maxKilledEnemies(char[][] grid) {
103+
int m = grid.length;
104+
int n = grid[0].length;
105+
int[][] g = new int[m][n];
106+
for (int i = 0; i < m; ++i) {
107+
int t = 0;
108+
for (int j = 0; j < n; ++j) {
109+
if (grid[i][j] == 'W') {
110+
t = 0;
111+
} else if (grid[i][j] == 'E') {
112+
++t;
113+
}
114+
g[i][j] += t;
115+
}
116+
t = 0;
117+
for (int j = n - 1; j >= 0; --j) {
118+
if (grid[i][j] == 'W') {
119+
t = 0;
120+
} else if (grid[i][j] == 'E') {
121+
++t;
122+
}
123+
g[i][j] += t;
124+
}
125+
}
126+
for (int j = 0; j < n; ++j) {
127+
int t = 0;
128+
for (int i = 0; i < m; ++i) {
129+
if (grid[i][j] == 'W') {
130+
t = 0;
131+
} else if (grid[i][j] == 'E') {
132+
++t;
133+
}
134+
g[i][j] += t;
135+
}
136+
t = 0;
137+
for (int i = m - 1; i >= 0; --i) {
138+
if (grid[i][j] == 'W') {
139+
t = 0;
140+
} else if (grid[i][j] == 'E') {
141+
++t;
142+
}
143+
g[i][j] += t;
144+
}
145+
}
146+
int ans = 0;
147+
for (int i = 0; i < m; ++i) {
148+
for (int j = 0; j < n; ++j) {
149+
if (grid[i][j] == '0') {
150+
ans = Math.max(ans, g[i][j]);
151+
}
152+
}
153+
}
154+
return ans;
155+
}
156+
}
157+
```
158+
159+
### **C++**
160+
161+
```cpp
162+
class Solution {
163+
public:
164+
int maxKilledEnemies(vector<vector<char>>& grid) {
165+
int m = grid.size(), n = grid[0].size();
166+
vector<vector<int>> g(m, vector<int>(n));
167+
for (int i = 0; i < m; ++i)
168+
{
169+
int t = 0;
170+
for (int j = 0; j < n; ++j)
171+
{
172+
if (grid[i][j] == 'W') t = 0;
173+
else if (grid[i][j] == 'E') ++t;
174+
g[i][j] += t;
175+
}
176+
t = 0;
177+
for (int j = n - 1; j >= 0; --j)
178+
{
179+
if (grid[i][j] == 'W') t = 0;
180+
else if (grid[i][j] == 'E') ++t;
181+
g[i][j] += t;
182+
}
183+
}
184+
for (int j = 0; j < n; ++j)
185+
{
186+
int t = 0;
187+
for (int i = 0; i < m; ++i)
188+
{
189+
if (grid[i][j] == 'W') t = 0;
190+
else if (grid[i][j] == 'E') ++t;
191+
g[i][j] += t;
192+
}
193+
t = 0;
194+
for (int i = m - 1; i >= 0; --i)
195+
{
196+
if (grid[i][j] == 'W') t = 0;
197+
else if (grid[i][j] == 'E') ++t;
198+
g[i][j] += t;
199+
}
200+
}
201+
int ans = 0;
202+
for (int i = 0; i < m; ++i)
203+
{
204+
for (int j = 0; j < n; ++j)
205+
{
206+
if (grid[i][j] == '0') ans = max(ans, g[i][j]);
207+
}
208+
}
209+
return ans;
210+
}
211+
};
212+
```
213+
214+
### **Go**
67215
216+
```go
217+
func maxKilledEnemies(grid [][]byte) int {
218+
m, n := len(grid), len(grid[0])
219+
g := make([][]int, m)
220+
for i := range g {
221+
g[i] = make([]int, n)
222+
}
223+
for i := 0; i < m; i++ {
224+
t := 0
225+
for j := 0; j < n; j++ {
226+
if grid[i][j] == 'W' {
227+
t = 0
228+
} else if grid[i][j] == 'E' {
229+
t++
230+
}
231+
g[i][j] += t
232+
}
233+
t = 0
234+
for j := n - 1; j >= 0; j-- {
235+
if grid[i][j] == 'W' {
236+
t = 0
237+
} else if grid[i][j] == 'E' {
238+
t++
239+
}
240+
g[i][j] += t
241+
}
242+
}
243+
for j := 0; j < n; j++ {
244+
t := 0
245+
for i := 0; i < m; i++ {
246+
if grid[i][j] == 'W' {
247+
t = 0
248+
} else if grid[i][j] == 'E' {
249+
t++
250+
}
251+
g[i][j] += t
252+
}
253+
t = 0
254+
for i := m - 1; i >= 0; i-- {
255+
if grid[i][j] == 'W' {
256+
t = 0
257+
} else if grid[i][j] == 'E' {
258+
t++
259+
}
260+
g[i][j] += t
261+
}
262+
}
263+
ans := 0
264+
for i, row := range grid {
265+
for j, v := range row {
266+
if v == '0' && ans < g[i][j] {
267+
ans = g[i][j]
268+
}
269+
}
270+
}
271+
return ans
272+
}
68273
```
69274

70275
### **...**

0 commit comments

Comments
 (0)