已解决
LeetCode_滑动窗口_中等_1493.删掉一个元素以后全为 1 的最长子数组
来自网友在路上 181881提问 提问时间:2023-09-24 06:56:26阅读次数: 81
最佳答案 问答题库818位专家为你答疑解惑
目录
- 1.题目
- 2.思路
- 3.代码实现(Java)
1.题目
给你一个二进制数组 nums ,你需要从中删掉一个元素。请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。如果不存在这样的子数组,请返回 0。
提示 1:
输入:nums = [1,1,0,1]
输出:3
解释:删掉位置 2 的数后,[1,1,1] 包含 3 个 1 。
示例 2:
输入:nums = [0,1,1,1,0,1,1,0,1]
输出:5
解释:删掉位置 4 的数字后,[0,1,1,1,1,1,0,1] 的最长全 1 子数组为 [1,1,1,1,1] 。
示例 3:
输入:nums = [1,1,1]
输出:2
解释:你必须要删除一个元素。
提示:
1 <= nums.length <= 105
nums[i] 要么是 0 要么是 1 。
2.思路
(1)滑动窗口
3.代码实现(Java)
//思路1————滑动窗口
class Solution {public int longestSubarray(int[] nums) {int n = nums.length;// arr[0]、arr[1] 分别保存滑动窗口内 0、1 的数量int[] arr = new int[2];int left = 0;int right = 0;int res = 0;while (right < n){int inC = nums[right++];arr[inC]++;//保证滑动窗口中的 0 的数量不超过 1while (arr[0] > 1){int outC = nums[left++];arr[outC]--;}res = Math.max(res, arr[0] == 0 ? arr[1] - 1 : arr[1]);}return res;}
}
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"LeetCode_滑动窗口_中等_1493.删掉一个元素以后全为 1 的最长子数组":http://eshow365.cn/6-12599-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: Unity HDRP 录制透明通道序列帧
- 下一篇: WebSocket通信安全概览