diff options
author | Jack Sangdahl <[email protected]> | 2025-10-15 21:32:38 -0600 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2025-10-15 21:32:38 -0600 |
commit | 86230669f5cfa089b960e3eda32aa38c18954c80 (patch) | |
tree | 8b61fb6029bef65cdcdf2a25146316147cf3f54e /adjacent_increasing_subarr2.py | |
parent | 1014ead859d0e746fbf6c9840f95c83c36724120 (diff) | |
download | leetcode-86230669f5cfa089b960e3eda32aa38c18954c80.tar.gz leetcode-86230669f5cfa089b960e3eda32aa38c18954c80.zip |
Diffstat (limited to 'adjacent_increasing_subarr2.py')
-rw-r--r-- | adjacent_increasing_subarr2.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/adjacent_increasing_subarr2.py b/adjacent_increasing_subarr2.py new file mode 100644 index 0000000..18d4860 --- /dev/null +++ b/adjacent_increasing_subarr2.py @@ -0,0 +1,39 @@ +# 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 exists 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' where both +subarrays are strictly increasing, and the subarrays must be adjacent, +meaning 'b = a + k'. return the maximum possible value of 'k'. a subarrays is +a contiguous non-empty sequence of elements within an array +""" + + +class Solution(object): + def maxIncreasingSubarrays(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + n, ans = len(nums), 0 + up, pre = 1, 0 + for i in range(1, n): + if nums[i] > nums[i - 1]: + up += 1 + else: + pre = up + up = 1 + half = up >> 1 + m = min(pre, up) + candidate = max(half, m) + if candidate > ans: + ans = candidate + return ans + + +if __name__ == "__main__": + obj = Solution() + print(obj.maxIncreasingSubarrays(nums=[2, 5, 7, 8, 9, 2, 3, 4, 3, 1])) + print(obj.maxIncreasingSubarrays(nums=[1, 2, 3, 4, 4, 4, 4, 5, 6, 7])) |