题目:牛牛怎么看自己的牌牛几萣义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的牛牛怎么看自己的牌牛几有
一个长度为n的整數数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛怎么看自己的牌牛几想知道他最少可以把这个
数组分为几段排序子序列。
如樣例所示,牛牛怎么看自己的牌牛几可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出
输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
输出一个整数表示牛牛怎么看自己的牌牛几可以将A最少划分为多少段排序子序列
分析:找波峰波谷(波峰+波谷+1==序列个数)
//找波峰波谷(波峰+波谷+1==序列个数因此ret初始化为1) //以中间元素和左右两个元素大小作比较,因此i取值最大是n-2 ret++;//每进来一次说明有一个波峰/波谷 //正常情况下i-1,i,i+1位置都判断过来了,应该判断i+2位置了 //此时是i的位置,则需要i加1一次循环上去i再加一次,就是i+2了 //但是由于i的最大取值是i-2,因此当i==n-3时,如果i加1一次是n-2, //循环上去再加一次1就是n-1,越界了因此当i==n-3时无需再加1