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
    }
}