当前位置: 首页 > 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

http://www.lryc.cn/news/151395.html

相关文章:

  • bazel远程缓存(Remote Cache)
  • 算法竞赛入门经典习题2-6 排列(permutation)
  • 队列的链表实现 题目(难度1/10)
  • SpringMVC常用的三种获取请求参数的方式
  • 2023开学礼新疆理工学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工
  • 数据结构----结构--线性结构--字符串
  • 数据工厂-生成接口通用用例
  • N 字形变换
  • STM32+RTThread配置以太网无法ping通,无法获取动态ip的问题
  • python编写MQTT订阅程序
  • mysql 中 cast 函数用法
  • MongoDB 的简介
  • 是否在业务中使用大语言模型?
  • 37. 交换字符(第三期模拟笔试)
  • git 查看当前分支最近一次提交的commit SHA
  • LuatOS 开发指南
  • maven推包The environment variable JAVA_HOME is not correctly set
  • Python VScode 配置
  • 【vue2第九章】组件化开发和根组件以及style上的scoped作用
  • 从零开始的Hadoop学习(五)| HDFS概述、shell操作、API操作
  • 【spark】序列化和反序列化,transient关键字的使用
  • 2.4 Vector<T> 动态数组(随机访问迭代器)
  • Ubuntu下运行QEMU模拟riscv64跑Debian
  • 移动基站ip的工作原理
  • Kubernetes技术--使用kubeadm搭建高可用的K8s集群(贴近实际环境)
  • 【Linux】文件
  • Android OTA 相关工具(六) 使用 lpmake 打包生成 super.img
  • 信创环境 Phytium S2500 虚拟机最大内存规格测试
  • 新建工程——第一个S32DS工程
  • 基于Open3D的点云处理16-特征点匹配