Rust 力扣 - 1493. 删掉一个元素以后全为 1 的最长子数组

文章目录

题目描述

题解思路

本题我们能转换成求只包含一个0的子数组的最长长度

如果数组中不存在0,则结果为数组长度减一

我们使用一个left指针指向子数组的左边界,然后我们遍历子数组的右边界,我们记录子数组中0元素的位置idx0

当右边界遍历到0时,将左边界右移到idx0 + 1,并尝试刷新子数组的最长长度

当右边界遍历结束,尝试刷新子数组的最长长度

题解代码

rust 复制代码
impl Solution {
    pub fn longest_subarray(nums: Vec<i32>) -> i32 {
        let mut ans = 0;

        let mut idx0 = -1;

        for i in 0..nums.len() {
            if nums[i] == 0 {
                idx0 = i as i32;
                break;
            }
        }

        if idx0 == -1 {
            return nums.len() as i32 - 1;
        }

        let mut left = 0;

        for i in (idx0 + 1)..nums.len() as i32 {
            if nums[i as usize] == 0 {
                ans = ans.max(i - left - 1);
                left = idx0 + 1;
                idx0 = i;
            }
        }

        ans = ans.max(nums.len() as i32 - 1 - left);

        ans
    }
}

题目链接

https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/

相关推荐
statistican_ABin几秒前
中国宠物经济发展分析报告——基于R语言的2018-2024年宠物市场多维度分析
开发语言·r语言·宠物
AIsoft_86884 分钟前
最好用的会议纪要APP怎么选?功能横评
面试·职场和发展·iphone
烂蜻蜓8 分钟前
Flask入门教程(三十一):实用函数与类API——全局工具函数速查
后端·python·flask
计算机毕设定制辅导-无忧学长8 分钟前
《基于Spring Boot传承之光非遗陶瓷烧造产品交易平台的设计与实现》
java·vue.js·spring boot·后端·毕业设计
Zane199411 分钟前
内存都要回收,为什么JVM偏要把堆分成新生代和老年代
java·后端
Zane199412 分钟前
257 is 257 为什么是 True?小整数缓存背后还藏着一个更容易被忽略的机制
后端·python
matlab代码15 分钟前
基于matlab PCA人脸识别系统【源码63期】
开发语言·matlab
Terra.K15 分钟前
后端开发阶段性总结
java·开发语言·后端
学逆向的18 分钟前
PE——合并节
开发语言·网络安全·pe
刘广睿20 分钟前
素材去重为什么难?文件指纹、感知哈希与相似度判定的设计笔记
算法·哈希算法·产品设计·素材管理