给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。
示例 1:
输入:nums = [1,2,3,4,5]
输出:true
解释:任何 i < j < k 的三元组都满足题意
示例 2:输入:nums = [5,4,3,2,1]
输出:false
解释:不存在满足题意的三元组
class Solution {
public int wiggleMaxLength(int[] nums) {
//1 7 7 3 8
/**
贪心:
比较当前的差值 的符号和前面的符号是否不一样即可
要注意重复的情况 (如果当前的符号是>0||<0 ,之前元素=0(开头元素可能是重复的) 也要++ )
*/
if(nums.length<=1){
return nums.length;
}
//下面就最少有两个元素
int pre=nums[1]-nums[0];
int res=(pre==0?1:2);//记录序列长度
for(int i=2;i<nums.length;i++){
int cur=nums[i]-nums[i-1];//记录当前的差
if(cur<0&&pre>=0||cur>0&&pre<=0){
res++;
pre=cur;
}
}
return res;
}
}
标签:false,题意,nums,int,334,递增,示例,三元组,三元 From: https://blog.51cto.com/u_14689911/6096743