2023-09-02每日一題
一、題目編號
2511. 最多可以摧毀的敵人城堡數(shù)目
二、題目鏈接
點擊跳轉(zhuǎn)到題目位置
三、題目描述
給你一個長度為 n ,下標(biāo)從 0 開始的整數(shù)數(shù)組 forts ,表示一些城堡。forts[i] 可以是 -1 ,0 或者 1 ,其中:
-
-1 表示第 i 個位置 沒有 城堡。
-
0 表示第 i 個位置有一個 敵人 的城堡。
-
1 表示第 i 個位置有一個你控制的城堡。
現(xiàn)在,你需要決定,將你的軍隊從某個你控制的城堡位置 i 移動到一個空的位置 j ,滿足: -
0 <= i, j <= n - 1
-
軍隊經(jīng)過的位置 只有 敵人的城堡。正式的,對于所有 min(i,j) < k < max(i,j) 的 k ,都滿足 forts[k] == 0 。
當(dāng)軍隊移動時,所有途中經(jīng)過的敵人城堡都會被 摧毀 。
請你返回 最多 可以摧毀的敵人城堡數(shù)目。如果 無法 移動你的軍隊,或者沒有你控制的城堡,請返回 0 。
示例 1:
示例 2:
提示:
- 1 <= forts.length <= 1000
- -1 <= forts[i] <= 1
四、解題代碼
class Solution {
public:
int captureForts(vector<int>& 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) 如果當(dāng)前位置是沒有城堡,如果當(dāng)前存在上一個自己控制的城堡并且上一個沒有城堡的位置在上一個有城堡位置之前,則進行更新。
(3) 如果當(dāng)前位置有一個自己控制著的城堡如果上一個沒有城堡的位置存在,并且上一個沒有城堡存在的位置在自己控制的城堡位置之后,則也可以進行更新。文章來源:http://www.zghlxwxcb.cn/news/detail-693322.html
(4) 最后返回結(jié)果即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-693322.html
到了這里,關(guān)于2023-09-02 LeetCode每日一題(最多可以摧毀的敵人城堡數(shù)目)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!