文章目录
- 题目描述
- 思路 && 代码
题目描述
- 可以转换成300. 最长递增子序列,再看结果是否大于3
- 但上述写法O(N)复杂度实现不了,还是得用针对这道题的写法(见下)
思路 && 代码
- 学习了评论区大佬的写法,O(N) && O(1)
- 代码挺短的,但思路还是需要看一会= =。
- 注意:first 并不是何时都在 second 之后的。两个值之间的联系时紧时松,随着迭代进行不断维护。
- 重点代码只有循环部分,多看看多理解理解…码了半天字,感觉描述得不太好,还是交给读者从代码中理解吧~
class Solution {public boolean increasingTriplet(int[] nums) {// first 始终记录最小元素,second 记录某子序列第二大数int first = Integer.MAX_VALUE, second = Integer.MAX_VALUE;for(int i : nums) {if(i <= first) first = i; // 更新 firstelse if(i <= second) second = i; // 更新 secondelse return true; // 当前为第三个数字(因为既不是第一个也不是第二个)}return false; // 没找到!}
}