2023-07-05 Daily Challenge

Today I have done leetcode's July LeetCoding Challenge with cpp.

July LeetCoding Challenge 5

Description

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

auto speedup = [](){
  cin.tie(nullptr);
  cout.tie(nullptr);
  ios::sync_with_stdio(false);
  return 0;
}();
class Solution {
public:
  int longestSubarray(vector<int>& nums) {
    int start = 0;
    int count = 0;
    int answer = 0;
    for(int i = 0; i < nums.size(); ++i) {
      count += !nums[i];
      while(count > 1) {
        count -= !nums[start];
        start += 1;
      }
      answer = max(answer, i - start);
    }
    return answer;
  }
};

// Accepted
// 74/74 cases passed (53 ms)
// Your runtime beats 23.1 % of cpp submissions
// Your memory usage beats 65.98 % of cpp submissions (36.5 MB)