news 2026/9/24 20:32:10

轰炸敌人,最多可以摧毁的敌人城堡数目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
轰炸敌人,最多可以摧毁的敌人城堡数目

我的解法:

对于每一个空位置,进行一次bfs,从上下左右四个方向去寻找,这是岛屿问题的相似处理,但是这个题可以优化,因为横竖方向可以进行动规优化。

我们不需要对每个0都重新数一遍它所在的行和列有多少敌人。

  • 行:对于同一行里、两个墙之间的所有格子,它们能炸到的“行敌人”数量是一样的。我们只在行的开头或者刚经过一个墙之后,重新计算当前这段的敌人数量。

  • 列:同理,对于同一列里、两个墙之间的所有格子,它们能炸到的“列敌人”数量也是一样的。我们可以用一个数组colHits[]来缓存每一列当前段的敌人数量。

#include <vector> #include <algorithm> using namespace std; class Solution { public: int maxKilledEnemies(vector<vector<char>>& grid) { if (grid.empty() || grid[0].empty()) return 0; int m = grid.size(); int n = grid[0].size(); int result = 0; int rowHits = 0; // 缓存当前行这一段(两墙之间)的敌人数量 vector<int> colHits(n, 0); // 缓存每一列当前段的敌人数量 for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { // 1. 处理行:如果是行的开头,或者前一个是墙,就需要重新统计这一段行里的敌人 if (j == 0 || grid[i][j-1] == 'W') { rowHits = 0; // 向右扫描直到碰到墙或边界 for (int k = j; k < n && grid[i][k] != 'W'; ++k) { if (grid[i][k] == 'E') rowHits++; } } // 2. 处理列:如果是列的开头,或者上面一个是墙,就需要重新统计这一段列里的敌人 if (i == 0 || grid[i-1][j] == 'W') { colHits[j] = 0; // 向下扫描直到碰到墙或边界 for (int k = i; k < m && grid[k][j] != 'W'; ++k) { if (grid[k][j] == 'E') colHits[j]++; } } // 3. 只有当前位置是空位 '0' 时,才能放炸弹 if (grid[i][j] == '0') { result = max(result, rowHits + colHits[j]); } } } return result; } };

2511. 最多可以摧毁的敌人城堡数目

e摧毁的敌人城堡数目,所以我们返回 4 。
class Solution { public: int captureForts(vector<int>& forts) { int res = 0; int pre = -1; // 表示不存在 for(int i = 0; i < forts.size(); i++) { if(forts[i] != 0) { if(pre >= 0 && forts[i] != forts[pre]) // 1 和 -1 或者 -1 和 1出现 res = max(res, i - pre - 1); pre = i; } } return res; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 10:29:01

AI大洪水来袭!90%的人还在卷算法,聪明的已经盯上“铁饭碗”——协调人

AI大洪水来袭!90%的人还在卷算法,聪明的已经盯上“铁饭碗”——协调人 目录 AI大洪水来袭!90%的人还在卷算法,聪明的已经盯上“铁饭碗”——协调人 🔴 淘汰预警:纯技术“工具人” 🔵 晋升密码:协调型“问题终结者” 我们应该怎么做 做 LLM 技术,这样转型 “技术 + 协…

作者头像 李华
网站建设 2026/9/12 13:31:16

Python如何识别周围WiFi:跨平台实现与进阶技巧

在物联网设备管理、网络安全审计或智能家居场景中&#xff0c;识别周围WiFi网络是基础需求。Python凭借其丰富的生态库&#xff0c;能够跨平台实现WiFi扫描、信号强度检测及网络分析。本文将系统梳理主流方法&#xff0c;结合代码示例与性能对比&#xff0c;帮助开发者快速构建…

作者头像 李华
网站建设 2026/9/22 0:59:48

基于spring mvc和mybatis的网上食品零食商城系统视频vue3

目录 系统架构与技术栈核心功能模块技术实现要点数据库设计示例部署与扩展建议 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 系统架构与技术栈 Spring MVC MyBatis 作为后端框架&#xff0c;Vue3 作为…

作者头像 李华
网站建设 2026/9/23 13:19:29

常用的css

js控制样式&#xff1a; //html中&#xff1a;<text class"test_text" :style"{--base_color:currentColor}">测试</text>//data中:currentColor:pink //methods中&#xff1a;this.currentColorred//style中&#xff1a;使用变量取值.test_t…

作者头像 李华
网站建设 2026/9/23 13:21:39

枚举中间

lc lc2964 枚举中间hash class Solution { public: int divisibleTripletCount(vector<int>& nums, int d) { int n nums.size(); if (n < 3) return 0; int ret 0; unordered_map<int, int> hash; hash[nums[0] % d]; // 枚举中间 for (int i 1; i &l…

作者头像 李华