-
数组中会有3种状态,arr[ i ] > arr[ i + 1 ], arr[ i ] = arr[ i + 1 ], arr[ i ] < arr[ i + 1 ]
-
因为一组会有多个数据,所以 在 if 内套一个循环 循环结束表示 划分了一个子序列, i ++ ,count++;
-
因为出现i + 1 会有数组越界问题,创建一个n+1的数组大小。
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
int[] arr = new int[n + 1];
//数组大小为n+1是为了防止下面数组越界。
for (int i = 0; i < n; i++) {
//判断条件不能是arr.length;
arr[i] = in.nextInt();
}
int i = 0;
int count = 0;
while (i < n) {
if (arr[i] < arr[i + 1]) {
//表示该子序列非递增
while (i < n && arr[i] < arr[i + 1]) {
//判断下一个数字是否可以划分到这个子序列
i++;
}
count++; //表示该序列完毕,用count记录当前有几个子序列
i++;
} else if (arr[i] == arr[i + 1]) {
//相等i+1跳过。
i++;
} else {
//非递减序列
while (i < n && arr[i] > arr[i + 1]) {
i++;
}
count++;
i++;
}
}
System.out.println(count);
}
}
}