这道题说实话理清楚的话很简单,就是很容易绕进去,刚开始绕进去了很难受,解了半天才出来。。。。
给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。
如果符合下列情况之一,则数组 A 就是 锯齿数组:
每个偶数索引对应的元素都大于相邻的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > ...
或者,每个奇数索引对应的元素都大于相邻的元素,即 A[0] < A[1] > A[2] < A[3] > A[4] < ...
返回将数组 nums 转换为锯齿数组所需的最小操作次数。
示例 1:
输入:nums = [1,2,3]
输出:2
解释:我们可以把 2 递减到 0,或把 3 递减到 1。
示例 2:
输入:nums = [9,6,1,6,2]
输出:4
提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 1000
int movesToMakeZigzag(int* nums, int numsSize){
    int flag,sum1=0,sum2=0,arr[numsSize],i,j;
    if(numsSize%2==1){
        flag=2;
    }else{
        flag=1;
    }
    for(j=0;j<numsSize;j++)
    {
        arr[j]=nums[j];
    }
    for(i=1;i<=numsSize-2;i+=2)
    {
        if(arr[i+1]>=arr[i])
        {
            sum1+=arr[i+1]-arr[i]+1;
            arr[i+1]=arr[i]-1;
        }
        if(nums[i+1]<=nums[i])
        {
            sum2+=nums[i]-nums[i+1]+1;
            nums[i]=nums[i+1]-1;
        }
    }
    for(i=numsSize-flag;i>=1;i-=2)
    {
        if(arr[i-1]>=arr[i])
        {
            sum1+=arr[i-1]-arr[i]+1;
        }
        if(nums[i-1]<=nums[i])
        {
            sum2+=nums[i]-nums[i-1]+1;
        }
    }
    return fmin(sum1,sum2);
} 
   时间复杂度因为是o(n)所以很少,但是多用了一个数组所以空间复杂度o(n)比较高一点


















