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

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

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

力扣题目链接:https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/

给你一个长度为 n ,下标从 0 开始的整数数组 forts ,表示一些城堡。forts[i] 可以是 -1 ,0 或者 1 ,其中:

  • -1 表示第 i 个位置 没有 城堡。
  • 0 表示第 i 个位置有一个 敌人 的城堡。
  • 1 表示第 i 个位置有一个你控制的城堡。

现在,你需要决定,将你的军队从某个你控制的城堡位置 i 移动到一个空的位置 j ,满足:

  • 0 <= i, j <= n - 1
  • 军队经过的位置 只有 敌人的城堡。正式的,对于所有 min(i,j) < k < max(i,j) 的 k ,都满足 forts[k] == 0 。

当军队移动时,所有途中经过的敌人城堡都会被 摧毁

请你返回 最多 可以摧毁的敌人城堡数目。如果 无法 移动你的军队,或者没有你控制的城堡,请返回 0 。

 

示例 1:

输入:forts = [1,0,0,-1,0,0,0,0,1]
输出:4
解释:
- 将军队从位置 0 移动到位置 3 ,摧毁 2 个敌人城堡,位置分别在 1 和 2 。
- 将军队从位置 8 移动到位置 3 ,摧毁 4 个敌人城堡。
4 是最多可以摧毁的敌人城堡数目,所以我们返回 4 。

示例 2:

输入:forts = [0,0,1,-1]
输出:0
解释:由于无法摧毁敌人的城堡,所以返回 0 。

 

提示:

  • 1 <= forts.length <= 1000
  • -1 <= forts[i] <= 1

方法一:遍历

这道题说白了就是问你1-1之间最大的连续0的个数。

因此我们只需要使用一个变量last来记录上一个非0数是1还是-1,再使用一个变量cnt来记录当前连续0的个数。

接着遍历地图数组:

  • 如果当前元素非零:
    • 就看是否为 “1遇到-1-1遇到1”,如果是则更新答案最大值
    • 更新cntlast
  • 否则(当前元素为0): c n t + + cnt++ cnt++

即可。

  • 时间复杂度 O ( l e n ( f o r t s ) ) O(len(forts)) O(len(forts))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++

class Solution {
public:int captureForts(vector<int>& forts) {  // 1和-1之间最多连续0的个数int ans = 0;int last = 2, cnt = 0;for (int i = 0; i < forts.size(); i++) {if (forts[i]) {if ( last != forts[i] && last != 2) {ans = max(ans, cnt);}last = forts[i];cnt = 0;}else {  // 0cnt++;}}return ans;}
};

Python

# from typing import Listclass Solution:def captureForts(self, forts: List[int]) -> int:ans = 0last, cnt = 2, 0for fort in forts:if fort:if fort != last and last != 2:ans = max(ans, cnt)cnt = 0last = fortelse:cnt += 1return ans

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/132634912

相关文章:

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

【LetMeFly】2511.最多可以摧毁的敌人城堡数目 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/ 给你一个长度为 n &#xff0c;下标从 0 开始的整数数组 forts &#xff0c;表示一些城堡。forts[i] 可以是 -1 &#xff0c…...

bazel远程缓存(Remote Cache)

原理 您可以将服务器设置为构建输出&#xff08;即这些操作输出&#xff09;的远程缓存。这些输出由输出文件名列表及其内容的哈希值组成。借助远程缓存&#xff0c;您可以重复使用其他用户的 build 中的构建输出&#xff0c;而不是在本地构建每个新输出。 增量构建极大的提升…...

算法竞赛入门经典习题2-6 排列(permutation)

排列&#xff08;permutation&#xff09;——算法竞赛入门经典_还记得樱花正开~的博客-CSDN博客 上面的代码很厉害&#xff0c;学习...我的代码水平就比较差了... #include <cstdio> #include <set>int main(){for(int i 123; i < 329; i){std::set<int&…...

队列的链表实现 题目(难度1/10)

C数据结构与算法 目录 队列介绍 队列这种容器&#xff0c;就像大家排队上公交车一样。 第一个来到的人排在最前面&#xff1b; 最后来的排在最后面&#xff1b; 第一个先上车&#xff08;离开队列&#xff09;&#xff1b; 队列的接口 队列是有如下接口的容器&#xff1…...

SpringMVC常用的三种获取请求参数的方式

在Spring MVC中&#xff0c;可以使用多种方式来获取请求参数。下面我将介绍常用的几种方式&#xff0c;并提供相关的示例代码。 1. 使用RequestParam注解获取请求参数 RequestParam注解用于从请求中获取指定名称的参数值&#xff0c;并将其绑定到方法参数上。如果请求中没有找…...

2023开学礼新疆理工学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工

2023开学礼新疆理工学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工...

数据结构----结构--线性结构--字符串

数据结构----结构–线性结构–字符串 一.字符串的定义方式 第一种&#xff1a; char* str1"Hello"第二种&#xff1a; char str2[]"Hello";区别 1.所在区域不同 //str1在常量区//str2在这里的写法是在栈区2.元素是否可改 //str1中的元素不可改//st…...

数据工厂-生成接口通用用例

章节目录&#xff1a; 一、背景介绍二、前置准备三、设计思路四、代码具体实现五、执行效果六、其他说明七、结束语 一、背景介绍 有哪些用例是可以通用且固定的&#xff1f; 针对之前提到的接口用例设计思路&#xff0c;拆分为三个切入点&#xff1a; 举个例子&#xff1a; {…...

N 字形变换

N 字形变换 题目: 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a;P A H N A P L S I I G Y I R 之后&#xff0c;你的输…...

STM32+RTThread配置以太网无法ping通,无法获取动态ip的问题

记录一个非常蠢的问题&#xff0c;今天在移植rtthread的以太网驱动的时候出现无法获取动态ip的问题&#xff0c;问题如下&#xff1a; 设置为动态ip时不管是连接路由器还是电脑主机都无法ping通&#xff0c;也无法获取dns地址。 设置为静态ip时无法ping通主机。 使用wireshark…...

python编写MQTT订阅程序

Download | Eclipse Mosquitto 1、下载&#xff1a; https://mosquitto.org/files/binary/win64/mosquitto-2.0.17-install-windows-x64.exe 2、安装&#xff1a; 3、conf配置 1)使用notepad打开“C:\Program Files\mosquitto\mosquitto.conf”另存为c:\myapp\msquitto\mo…...

mysql 中 cast 函数用法

在 MySQL 中&#xff0c;CAST() 函数用于将一个表达式转换为指定的数据类型。它可以用于多种场景&#xff0c;例如将字符串转换为数字&#xff0c;或者将日期时间转换为特定格式。 以下是 CAST() 函数的基本语法&#xff1a; CAST(expression AS datatype) 其中&#xff0c…...

MongoDB 的简介

MongoDB 趋势 对于 MongoDB 的认识 Q&A QA什么是 MongoDB&#xff1f; 一个以 JSON 为数据模型的文档数据库一个以 JSON 为数据模型的文档数据库文档来自于“JSON Document”&#xff0c;并非我们一般理解的 PDF&#xff0c;WORD谁开发 MongDB&#xff1f; 上市公司 MongoD…...

是否在业务中使用大语言模型?

ChatGPT取得了巨大的成功&#xff0c;在短短一个月内就获得了1亿用户&#xff0c;并激发了企业和专业人士对如何在他们的组织中利用这一工具的兴趣和好奇心。 但LLM究竟是什么&#xff0c;它们如何使你的企业受益?它只是一种炒作&#xff0c;还是会长期存在? 在这篇文章中我…...

37. 交换字符(第三期模拟笔试)

题目&#xff1a; 给定一个01串&#xff08;仅由字符0和字符1构成的字符串&#xff09;。每次操作可以交换两个相邻的字符。 例如&#xff1a;对于字符串"001110"来说&#xff0c; 可以交换第二个字符0和第三个字符1&#xff0c;交换之后的字符串变成了"0101…...

git 查看当前分支最近一次提交的commit SHA

获取当前分支最近一次commit SHA &#xff08;长度为40个16进制数字的字符&#xff09;命令如下&#xff1a; git rev-parse HEAD 获取简写&#xff08;短&#xff09; commit SHA git rev-parse --short HEAD...

LuatOS 开发指南

NDK 开发 官方教程 官方例程 API 下载软件 下载官方NDK例程压缩包到本地&#xff0c;并解压。可以看到目录如下&#xff1a; doc: 文档教程 env: 编译环境 example: NDK示例 platform: 需要编译的平台&#xff08;air72x/air8xx&#xff09; tools: 其他辅助软件 VSCode 使…...

maven推包The environment variable JAVA_HOME is not correctly set

解决办法&#xff1a; 打开idea查看jdk安装位置 1.在/etc下面创建&#xff08;如果存在就是更新&#xff09;launchd.conf。里面添加一行&#xff1a; setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk/Contents/Home #JAVA_HOME后面是我的java安装路径…...

Python VScode 配置

在上一章节中我们已经安装了 Python 的环境&#xff0c;本章节我们将介绍 Python VScode 的配置。 准备工作&#xff1a; 安装 VS Code安装 VS Code Python 扩展安装 Python 3 安装 VS Code VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软…...

【vue2第九章】组件化开发和根组件以及style上的scoped作用

组件化开发和根组件 什么是组件化开发&#xff1f; 一个页面可以拆分为多个组件&#xff0c;每个组件有自己的样式&#xff0c;结构&#xff0c;行为&#xff0c;组件化开发的好处就是&#xff0c;便于维护&#xff0c;利于重复利用&#xff0c;提升开发的效率。 便于维护&…...

YOLO X Layout与Python结合实战:自动化文档结构解析应用

YOLO X Layout与Python结合实战&#xff1a;自动化文档结构解析应用 1. 项目背景与价值 在日常工作中&#xff0c;我们经常会遇到大量需要处理的文档——扫描的合同、电子发票、研究报告、技术文档等等。传统的人工处理方式不仅效率低下&#xff0c;还容易出错。想象一下&…...

【仅限前500名工程师】Python智能内存管理高阶训练营核心讲义:17个真实OOM案例、8种定制化GC策略、1份可审计内存SLA模板

第一章&#xff1a;Python智能体内存管理策略最佳实践Python智能体&#xff08;如基于LLM的Agent、ReAct架构或Tool-Calling系统&#xff09;在长期运行中易因对象滞留、缓存膨胀和闭包引用导致内存持续增长。高效内存管理不仅关乎稳定性&#xff0c;更直接影响推理延迟与并发吞…...

用PyTorch从零搭建U-Net:手把手教你搞定遥感图像分割(附完整代码)

用PyTorch从零搭建U-Net&#xff1a;手把手教你搞定遥感图像分割&#xff08;附完整代码&#xff09; 遥感图像分割是计算机视觉领域的重要应用方向&#xff0c;尤其在农业监测、城市规划、灾害评估等场景中发挥着关键作用。对于刚接触深度学习实践的开发者来说&#xff0c;从…...

uniapp中集成leaflet地图的3个坑与解决方案(附完整代码)

uniapp中集成leaflet地图的3个坑与解决方案&#xff08;附完整代码&#xff09; 在移动端开发领域&#xff0c;uniapp因其跨平台特性广受欢迎&#xff0c;而leaflet作为轻量级地图库也备受青睐。但当两者结合时&#xff0c;开发者往往会遇到一些意想不到的挑战。本文将深入剖析…...

PowerPaint-V1 Gradio与VSCode集成开发:图像修复插件开发指南

PowerPaint-V1 Gradio与VSCode集成开发&#xff1a;图像修复插件开发指南 1. 开发环境准备 开始之前&#xff0c;我们需要准备好开发环境。VSCode作为代码编辑器&#xff0c;配合Python环境&#xff0c;可以让你更高效地开发PowerPaint-V1的图像修复插件。 首先确保你的系统…...

高效Android系统清理:Universal Android Debloater专业指南

高效Android系统清理&#xff1a;Universal Android Debloater专业指南 【免费下载链接】universal-android-debloater Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices. Improve your privacy, the security and battery life of your d…...

5个实用技巧:让你的微信自动化工具真正发挥价值

5个实用技巧&#xff1a;让你的微信自动化工具真正发挥价值 【免费下载链接】wxauto Windows版本微信客户端&#xff08;非网页版&#xff09;自动化&#xff0c;可实现简单的发送、接收微信消息&#xff0c;简单微信机器人 项目地址: https://gitcode.com/gh_mirrors/wx/wxa…...

Spring_couplet_generation 学术研究价值:作为NLP文本生成任务的基准

Spring_couplet_generation&#xff1a;一个衡量NLP模型中文创作能力的基准任务 春联&#xff0c;作为中国传统文化的独特载体&#xff0c;其创作要求严格遵循平仄、对仗和意境的规则。这看似简单的红纸黑字&#xff0c;背后却蕴含着对语言韵律、语义对偶和美学意境的综合考验…...

24小时运行不中断:OpenClaw+GLM-4.7-Flash构建个人资讯聚合器

24小时运行不中断&#xff1a;OpenClawGLM-4.7-Flash构建个人资讯聚合器 1. 为什么需要个人资讯聚合器 每天早上打开手机&#xff0c;总会被各种新闻推送淹没。财经、科技、行业动态...信息过载已经成为现代人的通病。作为一个技术从业者&#xff0c;我发现自己花费在筛选有效…...

Spring_couplet_generation 助力科研:使用MATLAB进行生成结果的数据分析与可视化

Spring_couplet_generation 助力科研&#xff1a;使用MATLAB进行生成结果的数据分析与可视化 1. 引言 想象一下&#xff0c;你是一位研究语言文化或社会科学的学者&#xff0c;最近利用AI模型生成了成千上万副春联。面对这海量的文本数据&#xff0c;你可能会感到既兴奋又头疼…...