334. 递增的三元子序列
分析
- 核心思想:
- 使用一个长度为
2
的数组q
来记录递增子序列中的前两个元素:q[0]
表示递增子序列中的最小元素q[1]
表示递增子序列中第二小的元素
- 遍历数组,根据当前数字和
q
中的元素关系更新状态
- 使用一个长度为
- 遍历逻辑:
- 如果当前数字
num
小于等于q[0]
,更新q[0]
为更小的数字 - 如果当前数字大于
q[0]
且小于等于q[1]
,更新q[1]
为更小的数字 - 如果当前数字大于
q[1]
,说明找到了满足条件的递增三元组q[0], q[1], num
,返回true
- 如果当前数字
- 返回结果:
- 若遍历结束后仍未找到满足条件的三元组,则返回
false
- 若遍历结束后仍未找到满足条件的三元组,则返回
时间复杂度
遍历数组一次,每次更新双指针数组最多需要 O(1)
的时间
总时间复杂度为 O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|