学做招投标的网站,重庆网站建设子沃科技熊掌号,首码项目网发布平台,成都网站建设 erp2023-09-02每日一题
一、题目编号
2511. 最多可以摧毁的敌人城堡数目二、题目链接
点击跳转到题目位置
三、题目描述
给你一个长度为 n #xff0c;下标从 0 开始的整数数组 forts #xff0c;表示一些城堡。forts[i] 可以是 -1 #xff0c;0 或者 1 #xff0c;其中下标从 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
示例 2 提示
1 forts.length 1000-1 forts[i] 1
四、解题代码
class Solution {
public:int captureForts(vectorint forts) {int index1 -1;//记录上一个自己控制的城堡的位置int index2 -1;//记录上一个没有城堡的位置int n forts.size();int max0 0;for(int i 0; i n; i){if(forts[i] -1){if(index1 ! -1 index1 index2){max0 max(i-index1-1, max0);}index2 i;} else if(forts[i] 1){if(index2 ! -1 index2 index1){max0 max(i-index2-1, max0);}index1 i;}}return max0;}
};五、解题思路
(1) 遍历一遍需要记录的是上一个自己控制的城堡的位置index1上一个没有城堡的位置index2。
(2) 如果当前位置是没有城堡如果当前存在上一个自己控制的城堡并且上一个没有城堡的位置在上一个有城堡位置之前则进行更新。
(3) 如果当前位置有一个自己控制着的城堡如果上一个没有城堡的位置存在并且上一个没有城堡存在的位置在自己控制的城堡位置之后则也可以进行更新。
(4) 最后返回结果即可。