1752. 检查数组是否经排序和轮转得到 - 力扣(LeetCode)
1752. 检查数组是否经排序和轮转得到 - 给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。 如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则,返回 false 。 源数组中可能存在 重复项 。 注意:数组 A 在轮转 x 个位置后得到长度相同的数组 B ,使得对于每一个有效的下标 i,满足 B[i] == A[(i+x) % A.length]。 示例 1: 输入:nums =...
思路
遍历一遍
- 如果出现了一次以上降序,说明无法通过旋转得到
- 如果出现了一次降序,并且第一个值小于最后一个值,说明无法通过旋转得到
- 其他情况可以通过旋转得到。
代码
class Solution {
public boolean check(int[] nums) {
boolean ex = false;
int last = Integer.MIN_VALUE;
for (int num : nums) {
if (num < last) {
if (ex) {
return false;
}
ex = true;
}
last = num;
}
return !ex || last <= nums[0];
}
}
1 个帖子 - 1 位参与者