[LeetCode] Adjacent Increasing Subarrays Detection II

3350. Adjacent Increasing Subarrays Detection II

Given an array nums of n integers, your task is to find the maximum value of k for which there exist two adjacent subarrays of length k each, such that both subarrays are strictly increasing. Specifically, check if there are two subarrays of length k starting at indices a and b (a < b), where:

  • Both subarrays nums[a..a + k - 1] and nums[b..b + k - 1] are strictly increasing.
  • The subarrays must be adjacent, meaning b = a + k.

Return the maximum possible value of k.

A subarray is a contiguous non-empty sequence of elements within an array.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int maxIncreasingSubarrays(vector<int>& nums) {
vector<int> dp(nums.size());
int res = 0;
for(int i = 0; i < nums.size(); i++) {
if(!i or nums[i] <= nums[i-1]) dp[i] = 1;
else dp[i] = dp[i-1] + 1;
res = max(res, dp[i] / 2);
if(i - dp[i] >= 0) res = max(res, min(dp[i-dp[i]], dp[i]));
}
return res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2024/11/10/PS/LeetCode/adjacent-increasing-subarrays-detection-ii/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.