题目来源:
leetcode题目,网址:2855. 使数组成为递增数组的最少右移次数 - 力扣(LeetCode)
解题思路:
首先获得数组的递增子数组个数,若大于 1 ,则必定不符号要求;否则判断数组最后一个元素是否大于第一个元素,若是,返回 -1,若递增子数组个数为 0 ,返回 0,若递增子数组个数为 1,假设第二个递增子数组起始位置为 pos,返回 nums.size()-pos。
解题代码:
class Solution {
public int minimumRightShifts(List<Integer> nums) {
int rise=0;
int pos=-1;
for(int i=1;i<nums.size();i++){
if(nums.get(i)<nums.get(i-1)){
rise++;
if(rise>1){
return -1;
}
pos=i;
}
}
if(rise>0 && nums.get(nums.size()-1)>nums.get(0) ){
return -1;
}
return rise==0?0:nums.size()-pos;
}
}
总结:
无官方题解。