LeetCode 361. 轰炸敌人(前缀和DP)
文章目录
- 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(vector<vector<char>>& grid) {if(grid.empty() || grid[0].empty())return 0;int m = grid.size(), n = grid[0].size(), i, j, pre = 0;vector<vector<int>> ans(m, vector<int>(n,0));//分四个方向求前缀和for(i = 0; i < m; ++i)for(j = 0, pre=0; 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, pre=0; 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, pre=0; 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, pre=0; 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阿明),一起加油、一起学习进步!
LeetCode 361. 轰炸敌人(前缀和DP)相关推荐
- 迷你世界电锯机器人_迷你世界:会旋转的机器人,安装多个火箭炮,全方位轰炸敌人...
大家好,我是爱玩迷你世界的小咖.欢迎收看小咖的第6期迷你教学~ 说到机器人,可能大家都见过现实中的机器人,或者看过电影中的机器人,它们或许很智能,也或许是一把武器.而小咖从武器中寻找灵感,自己制作了一 ...
- LeetCode 486. 预测赢家(博弈DP)
文章目录 1. 题目 2. 解题 1. 题目 给定一个表示分数的非负整数数组. 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,-- . 每次一个 ...
- Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))
Leetcode 208.实现 Trie (前缀树) 1 题目描述(Leetcode题目链接) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三 ...
- LeetCode 1563. 石子游戏 V(DP)
文章目录 1. 题目 2. 解题 2.1 区间DP 1. 题目 几块石子 排成一行 ,每块石子都有一个关联值,关联值为整数,由数组 stoneValue 给出. 游戏中的每一轮: Alice 会将这行 ...
- LeetCode 140. 单词拆分 II(DP+回溯)
1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中.返回所有这些可能的句子. 说明: 分隔时可以重复使 ...
- LeetCode 361. Bomb Enemy
原题链接在这里:https://leetcode.com/problems/bomb-enemy/description/ 题目: Given a 2D grid, each cell is eith ...
- LeetCode 91. Decode Ways--动态规划DP的Python和Java解法
题目地址: LeetCode 动态规划(Dynamic programming)系列题目:LeetCode 动态规划(Dynamic programming)系列题目 A message contai ...
- LeetCode Path Sum III(前缀和)
问题: 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二叉树 ...
- LeetCode 309: 一个很清晰的DP解题思路
问题来源 题目来源链接见下方: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/descript ...
最新文章
- 【C++】mingw32-make+cmake:error: ‘nullptr‘ was not declared in this scope解决方法
- 在Android Studio上进行OpenCV 3.1开发
- TypeScript里数组foreach和map操作的区别
- Php的https方法,php获取https协议内容的两种方法
- *【HDU - 4006】 The kth great number(优先队列 or 线段树)
- 苹果手机与安坐手机input输入框ios 会有灰色背景解决方法
- python学了真的很有用吗-会Python的人工作不会太差?编程课真的有必要学吗?
- 【GNN】一文读懂图卷积GCN
- 卷积神经网络-加载数据集
- 【tensorflow-C++之一】Beginner开始工程化
- JS显示当前时间(包含农历时间)
- 有孚网络与中国科学院虚拟经济与数据科学研究中心签署战略合作协议,推动行业智能化转型加速发展
- 笔记———计算机网络原理(三)
- L298N电机驱动的使用
- Lucas定理和拓展Lucas定理
- 浅谈表值函数和标量值函数
- VMware虚拟机过检测详细教程,巨全面,小白专享教程
- Nowcoder java-二维数组中的查找
- 一款小巧的kafka测试工具
- C++计算a的b次方的算法(附完整源码)
热门文章
- 解决:TypeError: Value passed to parameter 'a' has DataType int64 not in list of allowed values: float1
- php数值操作,php数值计算num类简单操作示例
- android pss内存,如何释放android系统中pss cache住的内存
- LeetCode7——Reverse Integer(将一个整数反转,注意溢出的处理)
- Redis分布式锁解决抢购问题
- H3C交换机配置学习随笔
- suse glibcxx版本过高问题
- 自定义控件--实现步骤
- javascript常用内置对象总结(重要)
- 微信开发学习日记(一):快速阅读5本书,掌握整体背景