C++程序 检查是否可以将数组旋转以使其增加或减少
给定一个由 N 个不同元素组成的数组 arr [] ,任务是通过向任何方向旋转数组来检查是否可能使数组增加或减少。
例子:
输入: arr [] = {4, 5, 6, 2, 3}
输出: 是的
数组可以旋转为 {2, 3, 4, 5, 6}
输入: arr [] = {1, 2, 4, 3, 5}
输出: 不
方法: 有四种可能性:
- 如果数组 已经增加 ,则答案为 是的 。
- 如果数组 已经减少 ,则答案为 是的 。
- 如果数组可以使其增加,则此可能是因为给定的数组首先增加到最大元素,然后减少。
- 如果数组可以使其减少,则此可能是因为给定的数组首先减少到最小元素,然后增加。
如果不能使数组增加或减少,则打印 No
下面是上面方法的实现:
输出:
时间复杂度: O(n)
辅助空间: O(1)