1. 程式人生 > 實用技巧 >1493. Longest Subarray of 1's After Deleting One Element

1493. Longest Subarray of 1's After Deleting One Element

Given a binary arraynums, you should delete one element from it.

Return the size of the longest non-empty subarray containing only 1'sin the resulting array.

Return 0 if there is no such subarray.

Example 1:

Input: nums = [1,1,0,1]
Output: 3
Explanation: After deleting the number in position 2, [1,1,1] contains 3 numbers with value of 1's.

Example 2:

Input: nums = [0,1,1,1,0,1,1,0,1]
Output: 5
Explanation: After deleting the number in position 4, [0,1,1,1,1,1,0,1] longest subarray with value of 1's is [1,1,1,1,1].

Example 3:

Input: nums = [1,1,1]
Output: 2
Explanation: You must delete one element.

Example 4:

Input: nums = [1,1,0,0,1,1,1,0,1]
Output: 4

Example 5:

Input: nums = [0,0,0]
Output: 0

Constraints:

  • 1 <= nums.length <= 10^5
  • nums[i]is either0or1.
    public int longestSubarray(int[] nums) {
        int ans = 0;
        for (int i = 0, j = 0, sum = 0; j < nums.length; ++j) {
            sum += nums[j];
            while (i < j && sum < j - i)  {
                sum 
-= nums[i++]; } ans = Math.max(ans, j - i); } return ans; }

摸到泥鰍了,哎呀好滑呀

確認過眼神,是不會的sliding window。

sum:window內1的數量

while迴圈(糾正window size),

we want to find a window that only contains a single zero and the rest of the elements are all ones.

https://leetcode.com/problems/longest-subarray-of-1s-after-deleting-one-element/discuss/708201/javaPython-3-Sliding-Window-with-at-most-one-zero-w-detailed-explanation-and-brief-analysis.