zl程序教程

您现在的位置是:首页 >  其他

当前栏目

LeetCode·每日一题·1144.递减元素使数组呈锯齿状·模拟

LeetCode模拟数组 元素 每日 递减
2023-09-27 14:26:29 时间

作者:小迅

链接:https://leetcode.cn/problems/decrease-elements-to-make-array-zigzag/solutions/2135792/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-jg0a/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目

思路

题意 -> 给定一个数组,操作数组元素使得满足题目要求,返回操作步数

由于题目要求是奇偶变换,所有直接按照题目要求进行模拟,枚举两次数组,一次变换奇位置,一次变换偶位置,最后返回两次变换中操作数小的即可

代码注释超级详细

代码

int movesToMakeZigzag(int* nums, int numsSize){
    int s[2] = {0};//记录奇偶变换操作数
    int n = numsSize;
    for (int i = 0; i < n; ++i) {//枚举位置
        int left = i ? nums[i - 1] : INT_MAX;//记录当前位置的左右元素
        int right = i < n - 1 ? nums[i + 1] : INT_MAX;
        s[i % 2] += fmax(nums[i] - fmin(left, right) + 1, 0);//取当变换的最小操作数
    }
    return fmin(s[0], s[1]);
}

作者:小迅
链接:https://leetcode.cn/problems/decrease-elements-to-make-array-zigzag/solutions/2135792/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-jg0a/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。