数组先严格递增再严格递减
java版本:
int[] arr=new int[]{4,3,5,7,8};
int res=0;
int[] arr=new int[]{4,3,4,5,1};
// int[] arr=new int[]{1,1,1};
int n=arr.length;
int[] nums=new int[n];
int max=nums[0],max_index=n/2;
// 找最大值,以最大值作界限
// 分两步
for(int i=0;i<n;i++){
nums[i]=arr[i];
if(max<nums[i]){
max=nums[i];
max_index=i;
}
}
System.out.println("max_index:"+max_index);
for(int i=1;i<max_index;i++){
if(nums[i]-nums[i-1]>0){
continue;
}else{
res+=nums[i-1]-nums[i]+1;
nums[i]=nums[i-1]+1;
}
}
System.out.println("第一步后的res:"+res);
for(int i=n-1;i>=max_index;i--){
if(i==1){
break;
}
if(nums[i]-nums[i-1]<0){
continue;
}else{
res+=nums[i]-nums[i-1]+1;
nums[i-1]=nums[i]+1;
}
}
System.out.println("res"+res);