楼主:
yam276 ('_')
2025-06-10 14:12:491493. Longest Subarray of 1's After Deleting One Element
题目:
必须删除一个元素
求 0, 1 阵列的最长连续 1 子阵列
思路:
一样双指标滑动窗口
right 碰到 0 就增加 zero_count
zero_count 大于 1 就让 left 开始排泄直到 zero_count < 1
每轮更新 max_len
跟前一题有九成像 没啥意思
Code:
impl Solution {
pub fn longest_subarray(nums: Vec<i32>) -> i32 {
let mut left = 0;
let mut right = 0;
let mut zero_count = 0;
let mut max_len = 0;
while right < nums.len() {
if nums[right] == 0 {
zero_count += 1;
}
while zero_count > 1 {
if nums[left] == 0 {
zero_count -= 1;
}
left += 1;
}
max_len = max_len.max(right - left);
right += 1;
}
max_len as i32
}
}