题目

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。

如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。

来源:力扣(LeetCode)


解答

力扣上的一个答案写的很好,就不班门弄斧了,直接上图:

alt

bool increasingTriplet(vector<int> &nums) {
    int n = nums.size();

    if (n < 3) {
        return false;
    }

    int small = INT_MAX;
    int mid = INT_MAX;

    for (auto i: nums) {
        if (i <= small) {
            small = i;
        } else if (i <= mid) {
            mid = i;
        } else if (i > mid) {
            return true;
        }
    }
    return false;
}