2511.最多可以摧毁的敌人城堡数目
链接:2511.最多可以摧毁的敌人城堡数目
难度:Easy
标签:数组、双指针
简介:请你返回 最多 可以摧毁的敌人城堡数目。
题解 1 - python
- 编辑时间:2023-09-02
- 执行用时:60ms
- 内存消耗:15.82MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
def captureForts(self, forts: List[int]) -> int:
res = 0
p0 = p1 = -1
for i in range(len(forts)):
fort = forts[i]
if fort == 1:
if p0 != -1 and p0 > p1:
res = max(res, i - p0 - 1)
p1 = i
elif fort == -1:
if p1 != -1 and p1 > p0:
res = max(res, i - p1 - 1)
p0 = i
return res
题解 2 - cpp
- 编辑时间:2023-09-02
- 执行用时:4ms
- 内存消耗:7.41MB
- 编程语言:cpp
- 解法介绍:遍历。
class Solution {
public:
int captureForts(vector<int>& forts) {
int res = 0, p0 = -1, p1 = -1;
for (int i = 0; i < forts.size(); i++) {
int fort = forts[i];
if (fort == 1) {
if (p0 != -1 && p0 > p1) res = max(res, i - 1 - p0);
p1 = i;
} else if (fort == -1) {
if (p1 != -1 && p1 > p0) res = max(res, i - 1 - p1);
p0 = i;
}
}
return res;
}
};
题解 3 - rust
- 编辑时间:2023-09-02
- 内存消耗:1.93MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
pub fn capture_forts(forts: Vec<i32>) -> i32 {
let mut res = 0i32;
let (mut p0, mut p1) = (-1i32, -1i32);
for i in 0..forts.len() {
let fort = forts[i];
if fort == 1 {
if p0 != -1 && p0 > p1 {
res = res.max((i as i32) - 1 - p0);
}
p1 = i as i32;
} else if fort == -1 {
if p1 != -1 && p1 > p0 {
res = res.max((i as i32) - 1 - p1);
}
p0 = i as i32;
}
}
res as i32
}
}