考虑数组中元素是否比前一个小,如果有一个以上这样的元素则返回false;如果有一个,则需要判断第一个元素是否比最有一个元素大(在数组尾部再加入一个首部元素作为哨兵即可避免特判)。
class Solution {
public:
bool check(vector<int>& nums) {
nums.push_back(nums.front());
int c=0;
for(int i=1;i<nums.size();i++){
if(nums[i]<nums[i-1]) c++;
}
return c<=1;
}
};
时间复杂度:O(n)
空间复杂度:O(n)