LettCode2289-Steps to Make Array Non-descreasing

这个题目是这样的,就是说给你一个数组,一个下标从0开始的整数数组nums.

在一步操作中,移除所有满足 nums[i-1] > nums[i] 的 nums[i], 其中 0 < i < nums.length

重复执行上面的步骤,直到数组nums变成 非递减 数组,返回所需执行的操作数

例子1:

输入:  nums = [5,3,4,4,7,3,6,11,8,5,11]
输出; 3
解释说明:  执行下述几个步骤:

step 1:  [5,3,4,4,7,3,6,11,8,5,11] 变成 [5,4,4,7,6,11,11] 在第1步操作中,比较数组中相邻的2个数
第二个数3比第一个5小,第六个数3比第五个数7小,第十个数5比第九个数8小,第九个数8比第八个数11小 => 把这几个小的数3,3,5,8都移除掉 step
2: [5,4,4,7,6,11,11] 变成 [5,4,7,11,11]
step 3: [5,4,7,11,11] 变成 [5,7,11,11]
[5,7,11,11]是一个完全的非递减数组,整个过程经历了3个步骤,所以返回3

 在step 1中有一个点不知道你注意到没,就是比较时,一定要从后往前来进行比较,也就是从数组的最后一位,往前面进行相邻的比较。而不能够从数组的第一位开始进行相邻的比较. 为什么呢,我们看数组中的 后面4位 [11,8,5,11] 如果从前往后,就会变成[11,5,11], 但如果从后往前,就会变成 [11,11]

 

posted on 2025-05-08 17:00  新西兰程序员  阅读(7)  评论(0)    收藏  举报