【code基础】判断数组中每个元素前递增序列子序列的最大长度
这是力扣刷题中很经典的一个套路,类似有:
- 以下标i为标准,其之前最长的非递增序列的个数
- 以下标i为标准,其之后的最长非递减序列的个数
//以下标i为标准,其之前最长的非递增序列的个数
int[] res = new int[nums.length];
//下标i之前的k个元素是非递增的线段数 。
for (int i = 2; i < nums.length; i++) {
//如果后面元素比前一个元素大,即为递增的,不满足非递增,left[i]=0;
if (nums[i - 1] > nums[i - 2]) {
res[i]=0;
}
//否则是递增的,在前一个结果上+1
else res[i]= res[i - 1] + 1;
}
//以下标i为标准,其之后的最长非递减序列的个数
int[] res1 = new int[nums.length];
for (int i = nums.length - 3; i >= 0; i--) {
//如果后前面元素比后一个元素大,即为递减的,不满足非递减,right[i]=0;
if(nums[i + 1] > nums[i + 2]){
res1[i] = 0;
}else{
//否则是递减的,在前一个结果上+1
res1[i] = res1[i + 1] + 1;
}
}