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

news2024/10/5 14:24:04

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

力扣题目链接:力扣题目链接

给你一个长度为 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和-1之间最大的连续0的个数。

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

接着遍历地图数组:

  • 如果当前元素非零:

    • 就看是否为 “1遇到-1或-1遇到1”,如果是则更新答案最大值
    • 更新cnt和last
  • 否则(当前元素为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 {  // 0
                cnt++;
            }
        }
        return ans;
    }
};

GO

func captureForts(forts []int) (ans int) {
	n := len(forts)
	i := 0
	for i < n {
		j := i + 1
		if forts[i] != 0 {
			for j < n && forts[j] == 0 {
				j++
			}
			if j < n && forts[i]+forts[j] == 0 {
				ans = max(ans, j-i-1)
			}
		}
		i = j
	}
	return
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/970971.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“一个都不能死”在线小游戏源代码

这款名为”一个都不能死”的网页在线小游戏是一款自适应PC和手机的网页游戏。你只需要准备一台服务器或主机&#xff0c;将游戏文件解压并上传到服务器上&#xff0c;就可以开始游戏了。 如果需要进行一些文字内容的修改&#xff0c;你可以在js/main.js文件中进行相应的修改。…

HDFS 集群动态节点管理

目录 一、动态扩容、节点上线 1.1 背景 1.2 扩容步骤 1.2.1 新机器基础环境准备 1.2.2 Hadoop 配置 1.2.3 手动启动 DataNode 进程 1.2.4 Web 页面查看情况 1.2.5 DataNode 负载均衡服务 二、动态缩容、节点下线 2.1 背景 2.2 缩容步骤 2.2.1 添加退役节点 …

dubbo服务管控

我们已经介绍了Dubbo在服务治理方面提供的特性&#xff0c;今天我们一起来看看Dubbo在其它方面提供的特性。同服务治理篇一样&#xff0c;本文的目的在于学会使用Dubbo在服务管控方面提供的特性&#xff0c;依旧不涉及任何实现原理。 工程结构 嗯~~ 是这样的&#xff0c;因为…

python webdriver 测试框架数据驱动json文件驱动的方式

简介&#xff1a; 数据驱动excel驱动方式,就是数据配置在excel里面&#xff0c;主程序调用的时候每次用从excel里取出的数据作为参数&#xff0c;进行操作&#xff0c; 需要掌握的地方是对excel的操作&#xff0c;要灵活的找到目标数据 测试数据.xlsx: 路径-D:\test\0627 E…

设计模式之代理模式与外观模式

目录 代理模式 简介 优缺点 角色职责 实现 运用场景 外观模式 简介 角色职责 优缺点 实现 使用场景 代理模式 简介 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0c;代理对象作为…

京东搜索EE链路演进 | 京东云技术团队

导读 搜索系统中容易存在头部效应&#xff0c;中长尾的优质商品较难获得充分的展示机会&#xff0c;如何破除系统的马太效应&#xff0c;提升展示结果的丰富性与多样性&#xff0c;助力中长尾商品成长是电商平台搜索系统的一个重要课题。其中&#xff0c;搜索EE系统在保持排序…

北美电池测试标准解读:UL 1642、UL 2054、UL 2056、UL 2089 测试报告

在日常生活中人们与各类电子产品的交流和互动越来越多&#xff0c;由于电池与人们的接触日益密切&#xff0c;电池的安全性显得格外重要&#xff0c;因此越来越多商家注重保证电池的安全性&#xff0c;避免因电池安全事故带来的人身伤害和品牌名誉损失。特别是亚马逊今年开年来…

无涯教程-JavaScript - DMIN函数

描述 DMIN函数返回列表或数据库中符合您指定条件的列中的最小数字。 语法 DMIN (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的行是记录,数据的列是字段。列表的第一行包含…

动辄百万的工业数据处理软件,现在60秒就能用上

刚刚过去的周五&#xff0c;TDengine团队正式发布了新版3.1.1.0, 并上线了新的官网。虽没有发布会&#xff0c;但对涛思数据而言&#xff0c;这是一个“蓄谋已久”的动作。因为新版TDengine里包含了一个核心模块taosX&#xff0c;它具备强大的数据抓取、清洗、转换、加载(ETL)功…

金九银十,软件测试最新面试题整理(超详细~)

1、创建坐席组的功能模块&#xff0c;如何进行测试用例设计&#xff1f; 解答&#xff1a; 功能测试&#xff0c;使用等价类划分法去分析创建坐席的每个输入项的有效及无效类&#xff0c;同步考虑边界值去设计对应的测试用例&#xff1a; 先进行冒烟测试&#xff0c;正常创建…

微信小程序新版canvas2d海报绘制(教你轻松搞定)

效果 说明&#xff1a; canvas官方很早已经发声不再维护了&#xff0c;所以很多方法都已经不再适用。目前官方推荐适用canvas2d来绘制生成海报。 canvas2d来绘制海报&#xff1a; canvas2d的优点&#xff1a; 例如&#xff1a; 不需要先预下载网络图片再绘制&#xff0c;前…

【Hello Algorithm】二叉树相关算法

本篇博客介绍&#xff1a;介绍二叉树的相关算法 二叉树相关算法 二叉树结构遍历二叉树递归序二叉树的交集非递归方式实现二叉树遍历二叉树的层序遍历 二叉树难题二叉树的序列化和反序列化lc431求二叉树最宽的层二叉树的后继节点谷歌面试题 二叉树结构 如果对于二叉树的结构还有…

C#FreeSql分库分表

using FreeSql; using FreeSql.DataAnnotations;namespace FreeSqlMaster {internal class Program{static IFreeSql freeSql null;static void Main(string[] args){// 读写分离// FreeSql 实现了第3种方案&#xff0c;支持一个【主库】多个【从库】&#xff0c;【从库】的查…

MPU6050姿态手势控制:二自由度云台

使用芯片&#xff1a;STM32 F103 C8T6 开源一款 MPU6050姿态手势控制二自由度云台 的设计程序与硬件清单&#xff0c;文章会贴出基本原理所需学习的文章连接&#xff0c;测试效果&#xff0c;元件清单&#xff0c;工程下载。 之前有做过二自由度机械臂的开发&#xff0c;但材…

阿里巴巴新一代SpringCloud学习指南重磅发布,揭示中国特色微服务组件的奥秘

SpringCloud Alibaba 的优势 阿里使用过的组件经历了考验&#xff0c;性能强悍&#xff0c;设计合理&#xff0c;现在开源出来给大家用。成套产品搭配完善的可视化界面给开发运维带来了极大的便利。搭建简单&#xff0c;学习曲线低。 作为国内微服务领域的领军企业&#xff0…

“钉钉官网首页的炫酷动效” 被我用css新特性轻松破解啦~

&#x1f33b; 前言 其实写本文的初衷只是想分享一个css新特性【scroll-timeline】&#x1f602;,但是我想要体现出它的强大效果&#xff0c;此时正好想到了之前看到过钉钉的首页动画&#xff0c;就是滚动页面然后进行一系列动画的&#xff0c;所以我决定实现一下这个效果。&am…

ChatGPT AIGC 完成动态堆积面积图实例

先使用ChatGPT AIGC描述一下堆积面积图的功能与作用。 接下来一起看一下ChatGPT做出的动态可视化效果图: 这样的动态图案例代码使用ChatGPT AIGC完成。 将完整代码复制如下: <!DOCTYPE html> <html> <head><meta charset="utf-8"><tit…

为反应系统实现MQTT客户端

MQTT-Reactive的目的是提供一种用C编写的可移植且无阻塞的MQTT客户端&#xff0c;以便在反应式嵌入式系统中使用。首先&#xff0c;本文说明什么是反应系统。然后&#xff0c;它描述了如何为这种系统设计合适的软件结构。最后&#xff0c;本文展示了如何通过使用状态机和事件驱…

【校招VIP】测试技术考点之单元测试集成测试

考点介绍&#xff1a; 单元测试,集成测试的区别是&#xff1a;方式不同、粒度不同、内容不同。单元测试用用于验证编码单元的正确性。集成测试用于验证详细设计。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 测试技术考点之单元测试&集成测试-相…

WIN11有网络但浏览器打不开

打开设置-》网络和INTERNET-》代理&#xff0c;将自动检测设置打开&#xff0c;将手动设置代理中的使用代理服务器关闭。就可以打开浏览器了。 不知道为什么会出现这样的问题