在遍历过程中同时维护"最小值"和"第二最小值"即可实现O(1)的空间与O(n)的时间
class Solution {
public boolean increasingTriplet(int[] nums) {
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;
}
}
蓄水池抽样算法————在未知长度的流式数据中随机抽样!
流数据开始带来...
当前第1个数字到来,拿第1个数的概率是100%
当前第2个数字到来,拿第2个数的概率是50%,保留原来拿的数字的概率是50%
当前第3个数字到来,拿第3个数的概率是33%,保留原来拿的数字的概率是66%
当前第4个数字到来,拿第4个数的概率是25%,保留原来拿的数字的概率是75%
最后拿的/保留的数字即为随机取样...
注意:此过程中设置一个递增的cnt变量,用于生成1/2、1/3、1/4...即拿当前数字替换原来数字的概率。
class Solution {