看了题解思路,没看代码,然后发现跟题解代码惊人的相似,嘶~
思路:
1.长度小于3压根就不可能有三元子序列,直接返回false。
2.定义a、b、c,3个变量用来表示递增的3个数,a初值为nums[0],b初值为int上限,c待定,也可以不赋初值。
3.从位置1开始遍历nums数组,遍历到的nums赋值给c。
4.默认b是大于a的,如果c大于b,那么说明此时已经有一个递增的三元组出现,可以返回true了;否则,c肯定是小于等于b的,按大小排列,如果c大于a,那么c在中间,a在最右侧,此时需要将b的值更新为c(因为设定中,abc是按照左中右顺序排列),如果c小于等于a,那么c在最左侧,此时需要将a的值更新为c。
5.如果直到nums遍历结束都没找到复合条件的递增三元组,那么返回false。
代码:
class Solution {
public boolean increasingTriplet(int[] nums) {
int len = nums.length;
if (len<3){
return false;
}
int a = nums[0], b = Integer.MAX_VALUE,c = 0;
for (int i = 1; i < len; i++) {
c = nums[i];
if (c>b){
return true;
}else {
if (c>a){
b = c;
}else {
a = c;
}
}
}
return false;
}
}