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.c | |
parent | 1014ead859d0e746fbf6c9840f95c83c36724120 (diff) | |
download | leetcode-86230669f5cfa089b960e3eda32aa38c18954c80.tar.gz leetcode-86230669f5cfa089b960e3eda32aa38c18954c80.zip |
Diffstat (limited to 'adjacent_increasing_subarr2.c')
-rw-r--r-- | adjacent_increasing_subarr2.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/adjacent_increasing_subarr2.c b/adjacent_increasing_subarr2.c new file mode 100644 index 0000000..3d0c8ec --- /dev/null +++ b/adjacent_increasing_subarr2.c @@ -0,0 +1,38 @@ +// 3350. Adjacent Increasing Subarrays Detection II +#include "leetcode.h" +#include <math.h> + +/* + * 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 + */ + +int maxIncreasingSubarrays(int *nums, int numsSize) { + int up = 1, pre = 0, ans = 0; + for (int i = 1; i < numsSize; i++) { + if (nums[i] > nums[i - 1]) + up++; + else { + pre = up; + up = 1; + } + int half = up >> 1; + int m = fmin(pre, up); + int candidate = fmax(half, m); + if (candidate > ans) + ans = candidate; + } + return ans; +} + +int main() { + int n1[] = {2, 5, 7, 8, 9, 2, 3, 4, 3, 1}, + n2[] = {1, 2, 3, 4, 4, 4, 4, 5, 6, 7}; + printf("%d\n", maxIncreasingSubarrays(n1, ARRAY_SIZE(n1))); // expect: 3 + printf("%d\n", maxIncreasingSubarrays(n2, ARRAY_SIZE(n2))); // expect: 2 +} |