【code基础】判断数组中每个元素前递增序列子序列的最大长度

这是力扣刷题中很经典的一个套路,类似有:

  1. 以下标i为标准,其之前最长的非递增序列的个数
  2. 以下标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;
    }
}
posted @ 2022-09-30 12:14  xiaoyu_jane  阅读(19)  评论(0编辑  收藏  举报