原笔记(代码待复核)
维护一个滑动窗口,窗口内只能存在一个零,同时每一步都动态更新最长子数组的长度
1int longestSubarray(vector<int>& nums)
2{
3 int left = 0, zero_count = 0, res = 0;
4
5 for(int right = 0; right < nums.size(); right++)
6 {
7 if(nums[right] == 0)
8 zero_count++;
9
10 while(1 < zero_count)
11 {
12 if(nums[left] == 0)
13 zero_count--;
14
15 left++;
16 }
17
18 res = std::max(right - left + 1 - 1,);
19 }
20 return res;
21}
来源:语雀原笔记