(数组) leetcode 1144

Posted 爱学英语的程序媛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(数组) leetcode 1144相关的知识,希望对你有一定的参考价值。

 

 

class Solution {
public:
    int movesToMakeZigzag(vector<int>& nums) {
        //判断每个位置 i 对于它的前后 i-1 和 i+1 需要减少多少
        //按照奇偶分类保存
        int ans[2]={0};
        for(int i=0; i<nums.size(); i++){
            int d1=0, d2=0;
            if(i>0 && nums[i] >= nums[i-1]){
                //对于位置i的前面i-1所需减少的最小操作数
                d1 = nums[i] - nums[i-1] +1;
            }
            if(i<nums.size()-1 && nums[i] >= nums[i+1]){
                //对于位置i的后面i+1所需减少的最小操作数
                d2 = nums[i] - nums[i+1] +1;
            }
            //ans[0]保存偶数位, ans[1]保存奇数位
            //对于位置i,只需要减去前后操作数的较大值,不能重复减
            ans[i%2] += max(d1, d2);  
        }
        return min(ans[0], ans[1]);
    }
};

以上是关于(数组) leetcode 1144的主要内容,如果未能解决你的问题,请参考以下文章

(数组) leetcode 1144

[LeetCode] 1144. Decrease Elements To Make Array Zigzag 递减元素使数组呈锯齿状

leetcode1144

1144: 零起点学算法51——数组中删数

1144 数星星 (树状数组)

洛谷P1144——最短路计数