leetcode_递增的三元子序列

给定一个未排序的数组,请判断这个数组中是否存在长度为3的递增的子序列。

正式的数学表达如下:

如果存在这样的i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,

使得arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。

要求算法时间复杂度为O(n),空间复杂度为O(1) 。

示例:

输入[1, 2, 3, 4, 5],

输出true.

输入[5, 4, 3, 2, 1],

输出false.

致谢:

特别感谢@DjangoUnchained添加这道题并创建所有测试用例。

我的思路:设立两个变量one和two,one表示此元素之前的最小值,而two表示其前面有比他小的最小值,即arr【j】的最小值,这样只要有比two大的就存在arr[i] < arr[j] < arr[k] ,返回true;one的目的是为了更新two;如果一个值比one大,却又比two小,则跟新two;这样做是因为one是最小值,所以跟新的two也是满足情况的最小取值;

代码实现:

leetcode_递增的三元子序列_第1张图片

今天和喜欢的人一起打游戏,嘻嘻,开心

                                                                                     咯咯咯

你可能感兴趣的:(leetcode_递增的三元子序列)