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",如果是则更新答案最大值
    • 更新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++

cpp 复制代码
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;
    }
};

Python

python 复制代码
# from typing import List

class Solution:
    def captureForts(self, forts: List[int]) -> int:
        ans = 0
        last, cnt = 2, 0
        for fort in forts:
            if fort:
                if fort != last and last != 2:
                    ans = max(ans, cnt)
                cnt = 0
                last = fort
            else:
                cnt += 1
        return ans

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/132634912

相关推荐
思茂信息18 分钟前
CST技术案例:加载正弦曲线的平面螺旋天线仿真研究
算法·平面·emc·cst·电磁仿真·仿真辐射
嫂子开门我是_我哥21 分钟前
敏感性分析
算法·机器学习·论文笔记
别动我齐刘海24 分钟前
实时控制学习2
linux·c++·人工智能·学习·算法
有Li34 分钟前
EEG脑电图数据处理基础
人工智能·算法·机器学习·语言模型·医学生
XMXFS1 小时前
小红书推荐算法底层逻辑解析:用数据思维做内容优化
python·算法·新媒体运营·推荐算法
0+1111 小时前
算法 --栈
算法·leetcode
鶴哥只手遮天1 小时前
Gmsh 源码深度解析-第 2 章 几何内核
算法·开源
鶴哥只手遮天1 小时前
Gmsh 源码深度解析-第 9 章 后处理与插件体系
算法·开源
圣保罗的大教堂1 小时前
leetcode 3723. 数位平方和的最大值 中等
leetcode
鶴哥只手遮天1 小时前
Gmsh 源码深度解析-第 7 章 网格质量、优化与高级技术
算法·开源