Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.
Formally the function should:
Return true if there exists i, j, k
such that arr[i] < arr[j] < arr[k] given 0 ≤ i < j < k ≤ n-1 else return false.
Your algorithm should run in O(n) time complexity and O(1) space complexity.
Examples:
Given [1, 2, 3, 4, 5]
,
return true
.
Given [5, 4, 3, 2, 1]
,
return false
.
找出unsorted 的序列里面有没有递增的三个elements
基本思想是顺序遍历一次,如果遇到比当前small更小的就更新small 如果有小于big但是大于small的就更新big
相当于是把中间的那个数变小,知道出现大于big 的数那么就是找到了
public class Solution {
public boolean increasingTriplet(int[] nums) {
int small = Integer.MAX_VALUE;
int big = Integer.MAX_VALUE;
for (int n : nums) {
if (n <= small)
{
small = n;
}
else if (n <= big)
{
big = n;
}
else {
return true;
}
}
return false;
}
}