原题链接:
https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/

解法1: 双指针

思路比较简单 但是题目要求其实还是要理解一下的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

// 双指针
class Solution {
public:
int captureForts(vector<int>& forts) {
int ans = 0;
int n = forts.size();
for(int i = 0 ; i < n ; i++){
// 如果是1 找-1 即城堡走到空位
// 如果是-1 找1
if(forts[i] != 0){
int j = i + 1;
while(j < n && forts[j] == 0){
j++;
}
// 刚好是1个城堡 1个空位的情况 则符合条件更新答案
if(forts[i] + forts[j] == 0){
ans = max(ans,j - i - 1);
}
i = j;
}
}

return ans;
}
};