Leetcode problem 1493 solution

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

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

Return the size of the longest non-empty subarray containing only 1's in 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.

 

Constraints:

  • 1 <= nums.length <= 105
  • nums[i] is either 0 or 1.

Solution: 

class Solution {
public:
    int longestSubarray(vector<int>& nums) {
        int previous_sum =0;
        int current_sum =0;
        int zero_counter =0;
        int size = nums.size();
        int max = INT_MIN;
        for(int i =0; i < size ; i++ )
        {
              if(nums[i] ==0)
              {   
                  if(previous_sum+current_sum > max )
                  max = previous_sum + current_sum;
                  previous_sum = current_sum;
                  current_sum =0;
                  zero_counter = 1;
              }
              else
              current_sum += nums[i];
        }
        if(previous_sum+current_sum > max )
            max = previous_sum + current_sum;
        if(zero_counter == 0)
          max =max -1;
        return max;
    }
};


Comments