【每日一题Day313】LC2511最多可以摧毁的敌人城堡数目 | 模拟

简介: 【每日一题Day313】LC2511最多可以摧毁的敌人城堡数目 | 模拟

最多可以摧毁的敌人城堡数目【LC2511】

给你一个长度为 n ,下标从 0 开始的整数数组 forts ,表示一些城堡forts[i] 可以是 -10 或者 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的个数
  • 实现时,可以使用变量记录军队和空位置的下标,当同时找到两个位置时,对结果进行更新;
  • 当找到新的军队位置或者空位置时,需要判断前一个空位置或者军队位置是否有效
  • 实现
class Solution {
    public int captureForts(int[] forts) {
        int army = -1, empty = -1;// 记录军队和空位置的下标
        int n = forts.length;
        int res = 0;
        for (int i = 0; i < n; i++){
            if (forts[i] == -1){// 找到了一个新的空位置                
                if (army < empty){// 如果军队位置army在旧空位置之前,那么需要寻找新的军队位置
                    army = -1;
                }
                empty = i;
            }else if (forts[i] == 1){// 找到了一个新的军队位置 
                if (empty < army){// 如果空位置empty在旧军队位置之前,那么需要寻找新的空位置
                    empty = -1;
                }
                army = i;
            }
            if (army != -1 && empty != -1){// 找到两个位置时,计算其中的敌人城堡数目
                res = Math.max(res, Math.abs(army - empty) - 1);
            }
        }
        return res;
    }
}

image.png

目录
相关文章
|
6月前
【每日一题Day327】LCP 50. 宝石补给 | 模拟
【每日一题Day327】LCP 50. 宝石补给 | 模拟
53 0
|
6月前
|
机器人
【每日一题Day270】LC874模拟行走机器人 | 哈希表+模拟
【每日一题Day270】LC874模拟行走机器人 | 哈希表+模拟
47 0
|
6月前
|
索引
leetcode代码记录(每日温度
leetcode代码记录(每日温度
35 0
|
6月前
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
46 0
|
6月前
【每日一题Day338】LC2582递枕头 | 模拟+数学
【每日一题Day338】LC2582递枕头 | 模拟+数学
29 0
leetcode 1921. 消灭怪物的最大数量(每日一题)
leetcode 1921. 消灭怪物的最大数量(每日一题)
82 0
Leecode 999. 车的可用捕获量
Leecode 999. 车的可用捕获量
56 0
每次放一个细胞,打印心脏或上千年,斯坦福大学如何加快3D打印心脏?
每次放一个细胞,打印心脏或上千年,斯坦福大学如何加快3D打印心脏?
|
算法 安全 C++
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
283 0
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
|
存储 算法 机器人
【算法刷题】—7.14模拟,数组螺旋输出,机器人走路
✨今日算法三题 1.二进制求和 2.螺旋矩阵 3.模拟行走机器人
【算法刷题】—7.14模拟,数组螺旋输出,机器人走路