3637. Trionic Array I
Description
You are given an integer array nums
of length n
.
An array is trionic if there exist indices 0 < p < q < n − 1
such that:
nums[0...p]
is strictly increasing,nums[p...q]
is strictly decreasing,nums[q...n − 1]
is strictly increasing.
Return true
if nums
is trionic, otherwise return false
.
Example 1:
Input: nums = [1,3,5,4,2,6]
Output: true
Explanation:
Pick p = 2
, q = 4
:
nums[0...2] = [1, 3, 5]
is strictly increasing (1 < 3 < 5
).nums[2...4] = [5, 4, 2]
is strictly decreasing (5 > 4 > 2
).nums[4...5] = [2, 6]
is strictly increasing (2 < 6
).
Example 2:
Input: nums = [2,1,3]
Output: false
Explanation:
There is no way to pick p
and q
to form the required three segments.
Constraints:
3 <= n <= 100
-1000 <= nums[i] <= 1000
Solutions
Solution 1: Single Pass
We first define a pointer \(p\), initially \(p = 0\), pointing to the first element of the array. We move \(p\) to the right until we find the first element that doesn't satisfy strict increasing order, i.e., \(nums[p] \geq nums[p + 1]\). If \(p = 0\) at this point, it means the first part of the array doesn't have a strictly increasing section, so we return \(\text{false}\) directly.
Next, we define another pointer \(q\), initially \(q = p\), pointing to the first element of the second part of the array. We move \(q\) to the right until we find the first element that doesn't satisfy strict decreasing order, i.e., \(nums[q] \leq nums[q + 1]\). If \(q = p\) or \(q = n - 1\) at this point, it means the second part of the array doesn't have a strictly decreasing section or there's no third part, so we return \(\text{false}\) directly.
If all the above conditions are satisfied, it means the array is trionic, and we return \(\text{true}\).
The time complexity is \(O(n)\), where \(n\) is the length of the array. The space complexity is \(O(1)\), using only constant extra space.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|