淮南先锋网,谷歌seo运营,软件工程公司有哪些,百度在成都有分公司吗文章目录1. 题目2. 解题1. 题目
想象一下炸弹人游戏#xff0c;在你面前有一个二维的网格来表示地图#xff0c;网格中的格子分别被以下三种符号占据#xff1a;
W 表示一堵墙
E 表示一个敌人
0#xff08;数字 0#xff09;表示一个空位请你计算一个炸弹最多能炸多少敌…
文章目录1. 题目2. 解题1. 题目
想象一下炸弹人游戏在你面前有一个二维的网格来表示地图网格中的格子分别被以下三种符号占据
W 表示一堵墙
E 表示一个敌人
0数字 0表示一个空位请你计算一个炸弹最多能炸多少敌人。
由于炸弹的威力不足以穿透墙体炸弹只能炸到同一行和同一列没被墙体挡住的敌人。
注意你只能把炸弹放在一个空的格子里
示例:输入: [[0,E,0,0],[E,0,W,E],[0,E,0,0]]
输出: 3
解释: 对于如下网格0 E 0 0
E 0 W E
0 E 0 0假如在位置 (1,1) 放置炸弹的话可以炸到 3 个敌人来源力扣LeetCode 链接https://leetcode-cn.com/problems/bomb-enemy 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
分别计算4个方向的前缀和每个位置的数量是四个前缀和相加
class Solution {
public:int maxKilledEnemies(vectorvectorchar grid) {if(grid.empty() || grid[0].empty())return 0;int m grid.size(), n grid[0].size(), i, j, pre 0;vectorvectorint ans(m, vectorint(n,0));//分四个方向求前缀和for(i 0; i m; i)for(j 0, pre0; j n; j){if(grid[i][j] W)pre 0;else if(grid[i][j] E)pre;elseans[i][j] pre;}for(i 0; i m; i)for(j n-1, pre0; j 0; --j){if(grid[i][j] W)pre 0;else if(grid[i][j] E)pre;elseans[i][j] pre;}for(j 0; j n; j)for(i 0, pre0; i m; i){if(grid[i][j] W)pre 0;else if(grid[i][j] E)pre;elseans[i][j] pre;}for(j 0; j n; j)for(i m-1, pre0; i 0; --i){if(grid[i][j] W)pre 0;else if(grid[i][j] E)pre;elseans[i][j] pre;}int maxcount 0;for(i 0; i m; i)for(j 0; j n; j)maxcount max(maxcount, ans[i][j]);return maxcount;}
};36 ms 9.6 MB 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步