给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。
数学表达式如下:
如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1, 使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。
输入: [1,2,3,4,5]
输出: true
输入: [5,4,3,2,1]
输出: false
双指针
定义 min 为序列中的较小值,mid 为中间值,看是否能找到较大值。
class Sulution {
public boolean increasingTriplet(int[] nums) {
if (nums == null || nums.length < 3) {
return false;
}
int min = Integer.MAX_VALUE;
int mid = Integer.MAX_VALUE;
for (int num : nums) {
if (num <= min) {
min = num;
} else if (num <= mid) {
mid = num;
} else {
return true;
}
}
return false;
}
}
- 时间复杂度:O(n)
- 空间复杂度:O(1)
The Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear? 你听过最伟大开发者的谬误还是最明智的话?
作者从 “I will learn it when I need it” 开始谈起,列举了一些自己的观点。
- 投资你的未来,而不是需要的时候才学习,渴望比知识更重要。
- 你不知道你不知道的知识,你不去学习它,是因为你根本不知道它的存在。
- 广度是深度的副作用,在一个领域成为专家,其他领域也顺便了解。
- 和大牛交朋友,从他们那里学到东西。
分享一个搜索引擎 —— 多吉搜索,它的宗旨是不追踪,不误导,称得上是国内的 duckduckgo。界面清爽,简单纯粹,搜索质量比百度高 100 倍。如果你不能愉快地访问谷歌,那么多吉搜索是不错的选择。:)
最近由于国庆,SS 服务被阻隔了,无法访问谷歌,对开发很不方便。互联网本该自由,何必构筑高墙,遮蔽众人耳目,自欺欺人呢?