题目描述
给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。
题解
定义两个变量
small和mid,分别记录发现的最小值和中间值,如果有比small小的,更新small,如果有比mid大的,则可以返回``true`
const increasingTriplet = function (nums) {
const len = nums.length;
if (len < 3) return false;
let small = Infinity; let mid = Infinity;
for (const num of nums) {
if (num <= small) {
small = num;
} else if (num <= mid) {
mid = num;
} else if (num > mid) {
return true;
}
}
return false;
};
时间复杂度:O(n)
空间复杂度:O(1)