当前位置: 首页 > news >正文

lintcode 553 · 炸弹袭击【中等 数组+bfs+模拟】

题目

https://www.lintcode.com/problem/553

给定一个二维矩阵, 每一个格子可能是一堵墙 W,或者 一个敌人 E 或者空 0 (数字 '0'), 返回你可以用一个炸弹杀死的最大敌人数. 炸弹会杀死所有在同一行和同一列没有墙阻隔的敌人。 由于墙比较坚固,所以墙不会被摧毁.你只能在空的地方放置炸弹.样例
样例1输入:
grid =["0E00","E0WE","0E00"
]
输出: 3
解释:
把炸弹放在 (1,1) 能杀3个敌人
样例2输入:
grid =[     "0E00",     "EEWE",     "0E00"]
输出: 2
解释:
P把炸弹放在 (0,0)(0,3)(2,0)(2,3) 能杀2个敌人

思路

BFS+模拟: 队列首先存放所有空的坐标。然后针对每一个空的坐标,往上走,往下走,往左走,往右走
统计遇到的E的个数cnt。遇到W就停止。取每一个坐标对应的cnt的最大值就是答案。注意数组为空的情况

答案

public class Solution {/*** @param grid: Given a 2D grid, each cell is either 'W', 'E' or '0'* @return: an integer, the maximum enemies you can kill using one bomb*/public int maxKilledEnemies(char[][] grid) {if (grid == null || grid.length ==0|| grid[0]==null|| grid[0].length ==0)return 0;int n = grid.length,m= grid[0].length;Queue<int[]> q = new LinkedList<>(); //存储所有空的地方for (int i = 0; i <n ; i++) {for (int j = 0; j <m ; j++) {if(grid[i][j] =='0'){q.add(new int[]{i,j});}}}if(q.size() ==0) return 0; //没有空的地方int max=Integer.MIN_VALUE;while (!q.isEmpty()){int[] cur = q.poll();int x = cur[0],y=cur[1];int x1 = x-1;int cnt = 0;while (x1>=0) { //向上走if(grid[x1][y] =='E')cnt++;if(grid[x1][y] =='W')break;x1--;}x1 = x+1;while (x1<n) { //向下走if(grid[x1][y] =='E')cnt++;if(grid[x1][y] =='W')break;x1++;}int y1 = y-1;while (y1>=0) { //向左走if(grid[x][y1] =='E')cnt++;if(grid[x][y1] =='W')break;y1--;}y1 = y+1;while (y1 < m) { //向右走if(grid[x][y1] =='E')cnt++;if(grid[x][y1] =='W')break;y1++;}max = Math.max(cnt,max);}return max;}
}

相关文章:

lintcode 553 · 炸弹袭击【中等 数组+bfs+模拟】

题目 https://www.lintcode.com/problem/553 给定一个二维矩阵, 每一个格子可能是一堵墙 W,或者 一个敌人 E 或者空 0 (数字 0), 返回你可以用一个炸弹杀死的最大敌人数. 炸弹会杀死所有在同一行和同一列没有墙阻隔的敌人。 由于墙比较坚固&#xff0c;所以墙不会被摧毁.你只…...

第一章 计算机系统概述 八、虚拟机

目录 一、传统虚拟机的结构 二、两类虚拟机管理程序 &#xff08;1&#xff09;定义&#xff1a; &#xff08;2&#xff09;区别&#xff1a;&#xff08;考点&#xff09; 一、传统虚拟机的结构 二、两类虚拟机管理程序 &#xff08;1&#xff09;定义&#xff1a; &…...

桶装水送水多水站送水员公众号h5开发

桶装水送水多水站送水员公众号h5开发 界面简洁易懂用户容易接受。 独家一户一码全家都能订水。 多个水站运营可按距离选择绑定。 三种支付方式水票、微信、到付。 强大员工系统老板坐享其成。 自由跑跑模式可招兼职送水员接单。 一户一码、全家享用 一户一码&#xff0c;精准…...

【JavaEE】多线程(二)

多线程&#xff08;二&#xff09; 文章目录 多线程&#xff08;二&#xff09;第一个多线程程序观察线程sleep创建线程继承Thread类&#xff0c;重写run方法实现Runnable&#xff0c; 重写run继承Thread&#xff0c;重写run实现Runnable&#xff0c;重写run基于lambda表达式 T…...

OkHttp 根据服务器返回的的过期时间设置缓存

据返回的缓存时间来缓存响应&#xff0c;可以通过使用OkHttp的CacheControl和ResponseCacheInterceptor来实现。以下是一个示例代码&#xff1a; // 创建缓存目录和缓存对象 File cacheDirectory new File(context.getCacheDir(), "http-cache"); int cacheSize 1…...

智能远程监考方案助力企业考试化繁为简

在音视频数字化之旅中&#xff0c;轻装上阵。 近年来&#xff0c;在数字化浪潮之下&#xff0c;远程考试频繁成为各领域热词&#xff0c;各企业也纷纷改革求新&#xff0c;将原本的企业内部考试转移到线上&#xff0c;从而获取更低廉的组考成本&#xff0c;更高的管理效率&…...

基于matlab实现的额 BP神经网络电力系统短期负荷预测未来(对比+误差)完整程序分享

基于matlab实现的额 BP神经网络电力系统短期负荷预测 完整程序&#xff1a; clear; clc; %%输入矢量P&#xff08;15*10&#xff09; P[0.2452 0.1466 0.1314 0.2243 0.5523 0.6642 0.7105 0.6981 0.6821 0.6945 0.7549 0.8215 0.2415 0.3027 0; 0.2217 0.1581 0.1408 0.23…...

WPF的_Expander控件

WPF Expander 是 WPF&#xff08;Windows Presentation Foundation&#xff09;框架中的一个控件&#xff0c;用于实现可以展开和折叠内容的可折叠面板。 Expander 控件通常由一个展开/折叠的标题&#xff08;Header&#xff09;和一个显示/隐藏的内容部分&#xff08;Content…...

【MT7628AN】IOT | MT7628AN OpenWRT开发与学习

IOT | MT7628AN OpenWRT开发与学习 时间:2023-06-21 文章目录 `IOT` | `MT7628AN` `OpenWRT`[开发与学习](https://blog.csdn.net/I_feige/article/details/132911634?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132911634…...

基于Matlab实现自动泊车(垂直泊车)

自动泊车是一项非常有趣和实用的技术&#xff0c;它可以让车辆在没有人为干预的情况下自动停放在合适的位置上。在这篇文章中&#xff0c;我们将介绍如何使用Matlab实现自动泊车。 首先&#xff0c;我们需要了解自动泊车的基本原理。自动泊车系统通常包括车辆、传感器和控制算…...

笔试面试相关记录(4)

&#xff08;1&#xff09;实现防火墙的主流技术有哪些&#xff1f; 实施防火墙主要采用哪些技术 - 服务器 - 亿速云 (yisu.com) &#xff08;2&#xff09; char arr[][2] {a, b, c, d}; printf("%d", *(arr1)); 输出的是谁的地址&#xff1f;字符c 测试代码如下…...

unity UDP 通信

客户端 接收端 &#xff1a; using System; using System.IO; using System.Collections; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine; using UnityEngine.UI;public cla…...

一篇解决JavaScript

华子目录 JavaScript介绍JavaScript的组成JavaScript书写位置内部外部 js注释js输入&#xff08;prompt&#xff09;js输出js变量js基本数据类型number&#xff08;数值类型&#xff09;string&#xff08;字符串&#xff09;Boolean&#xff08;布尔类型&#xff09;undefined…...

Unity UGUI(一)基础组件

文章目录 1.Text&#xff1a;文本框2.Image&#xff1a;精灵图3.RawImage&#xff1a;生图4.Button&#xff1a;按钮5.InputField&#xff1a;输入框6.Tooggle&#xff1a;选择框7.Slider&#xff1a;滑动条8.Dropdown&#xff1a;下拉菜单9.Scrollbar&#xff1a;滚动条10.Scr…...

【微服务】六. Nacos配置管理

6.1 Nacos实现配置管理 配置更改热更新 在nacos左侧新建配置管理 Data ID&#xff1a;就是配置文件名称 一般命名规则&#xff1a;服务名称-环境名称.yaml 配置内容填写&#xff1a;需要热更新需求的配置 配置文件的id&#xff1a;[服务名称]-[profile].[后缀名] 分组&#…...

【华为云云耀云服务器L实例评测|云原生】自定制轻量化表单Docker快速部署云耀云服务器

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…...

无涯教程-JavaScript - ACOTH函数

描述 ACOTH函数返回数字的反双曲余切。 语法 ACOTH (number)争论 Argument描述Required/OptionalNumberThe absolute value of Number must be greater than 1. i.e., Number must be must be less than -1 or greater than 1.Required Notes 用于计算双曲反余切的方程为-…...

Qt QTreeWidge解决setItemWidget后,导致复选框失效

一、问题&#xff1a; QTreeWidget某一项加上itemWidget后&#xff0c;导致复选框失效问题 二、解决方法 将要加上的widget控件加到该项的后续的列&#xff0c;即控件跟复选框不同一列 三、具体代码 QTreeWidget* treeW new QTreeWidget; treeW->setColumnCount(2); /…...

strncpy

strncpy&#xff1a; 函数介绍&#xff1a; 函数原型&#xff1a; char *strncpy(char *dest, const char *src, int n) 返回值&#xff1a;dest字符串起始地址 说明&#xff1a; 1、当src字符串长度小于n时&#xff0c;则拷贝完字符串后&#xff0c;剩余部分将用空字节填…...

c++学习【23】matlab实现FOC算法

% 创建Figure窗口和滑块 figure;Id_slider uicontrol(Style, slider, Position, [100 50 120 20], ...Min, -5, Max, 5, Value, 1.5, Callback, updateVoltage); Id_text uicontrol(Style, text, Position, [100 80 120 20], String, d轴电流: 1.5);Iq_slider uicontrol(Sty…...

从零搭建Binance Trade Bot:精通加密货币自动交易工具配置与使用

从零搭建Binance Trade Bot&#xff1a;精通加密货币自动交易工具配置与使用 【免费下载链接】binance-trade-bot Automated cryptocurrency trading bot 项目地址: https://gitcode.com/gh_mirrors/bi/binance-trade-bot 一、核心功能解析&#xff1a;Binance Trade Bo…...

Harmonyos应用实例226:复数的三角形式与运算

8. 复数的三角形式与运算 功能简介:将复数表示为三角形式,计算模和幅角,支持复数的乘法、除法运算的几何意义。通过复平面可视化展示复数的三角形式和运算过程,帮助学生理解复数的三角表示和运算规则。 ArkTS代码: @Entry @Component struct ComplexTrigonometric {@St…...

ComfyUI IPAdapter Plus插件ClipVision模型加载故障排除指南

ComfyUI IPAdapter Plus插件ClipVision模型加载故障排除指南 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 问题诊断&#xff1a;ClipVision模型加载失败的典型症状与成因分析 在ComfyUI工作流中集成…...

工业自动化实战:如何用IEEE 802.1AS实现微秒级时间同步(附Linux配置)

工业自动化实战&#xff1a;如何用IEEE 802.1AS实现微秒级时间同步&#xff08;附Linux配置&#xff09; 在工业4.0和智能制造浪潮下&#xff0c;毫秒级时间同步已无法满足高端装备协同控制的需求。某汽车生产线曾因500微秒的时间偏差导致机械臂碰撞&#xff0c;直接造成数百万…...

JAVA集成CAS客户端总结

一、依赖<dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-support-springboot</artifactId><version>3.6.4</version></dependency>二、yml配置cas:server-url-prefix: https://xxx.xxx:8443/cas…...

python-dateutil - 强大的日期时间解析与计算工具

一、什么是python-dateutil&#xff1f; python-dateutil 是一个用于扩展标准库 datetime 模块的 Python 库。 它可以帮助你&#xff1a; 灵活地解析各种格式的日期时间字符串。进行复杂的日期时间计算&#xff0c;例如计算两个日期之间的相对时间。处理时区信息&#xff0c;…...

语音转换技术全解析:从原理到实践的Retrieval-based Voice-Conversion-WebUI指南

语音转换技术全解析&#xff1a;从原理到实践的Retrieval-based Voice-Conversion-WebUI指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI 语音数据小于等于10分钟也可以用来训练一个优秀的变声模型&#xff01; 项目地址: https://gitcode.com/GitHub_Trending…...

Graphviz自动排版太随机?教你5个技巧精准控制节点位置

Graphviz自动排版太随机&#xff1f;5个专业技巧精准控制节点位置 当你用Graphviz绘制关系图时&#xff0c;是否遇到过这样的困扰&#xff1a;明明代码逻辑清晰&#xff0c;生成的图表却总是不按预期排列&#xff1f;节点位置随机跳跃&#xff0c;关键元素错位&#xff0c;甚至…...

PX4仿真环境搭建全流程:解决roslaunch indoor1.launch报错及Gazebo崩溃问题

PX4仿真环境搭建全流程&#xff1a;从零构建到Gazebo调优实战 无人机仿真开发就像在数字世界里搭建一个飞行实验室&#xff0c;而PX4Gazebo的组合无疑是目前最接近真实飞行体验的虚拟试验场。但当你满怀期待地输入roslaunch indoor1.launch后&#xff0c;等待你的可能不是顺利起…...

逆向工程必备:用aardio和Sunny中间件抓取手机App封包的3种实战姿势

逆向工程实战&#xff1a;aardio与Sunny中间件的移动端封包拦截艺术 在移动应用安全研究领域&#xff0c;封包拦截与分析是理解应用通信逻辑的关键入口。不同于传统的PC端抓包&#xff0c;移动环境面临着证书绑定、代理检测等更复杂的防御机制。aardio配合Sunny中间件构建的轻量…...