本文主要是介绍1493.删掉一个元素以后全为1的最长子数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:给一个二进制数组nums,从中删掉一个元素。
在删掉元素的结果数组中,返回最长的且只包含1的非空子数组的长度。
如果不存在这样的子数组,请返回0.
解题思路:典型的滑动窗口问题,可以通过遍历数组并使用两个指针来解决,一个指针代表窗口的开始,另一个指针代表窗口的结束。当窗口全为1时,尝试扩大窗口直到遇到0为止,并记录下此时窗口的最大长度。
class Solution{public int longestSubarray(int[] nums){int ans=0;int p0=0,p1=0;for(int num:nums){if(num==0){p1=p0;p0=0; } else{++p0;++p1; } ans=Math.max(ans,p1);}if(ans==nums.length){--ans; } return ans;}
}
这篇关于1493.删掉一个元素以后全为1的最长子数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!