题意:n个数字的序列,让你找出最长的-连续的一串最大值和最小值不超过1的序列
由于这道题目我们要找出的序列的情况不复杂并且要求连续的序列,所以我首先想到的dp
用dp[i][0]表示最后一个数的下标是i,并且序列中的数全是a[i]和a[i]-1,dp[i][1]相对应的表示序列中全是a[i]和a[i]+1,这样的话状态转移方程也出来了。
if(a[j]==a[j-1]){
dp[i][1]=dp[i-1][1]+1;
dp[i][0]=dp[i-1][0]+1;
}
else if(a[j]==a[j-1]+1){
dp[i][0]=dp[i-1][1]+1;
dp[i][1]=1;
}
else if(a[j]==a[j-1]-1){
dp[i][1]=dp[i-1][0]+1;
dp[i][0]=1;
}
else{
dp[j][1]=1;
dp[j][0]=1;
}
还比较长,基本上用dp就这样做的,但是最后超时了
最后ac使用的尺取+set做的时间复杂度会低很多