题目链接
英文链接:https://leetcode.com/problems/decrease-elements-to-make-array-zigzag/
中文链接:https://leetcode-cn.com/problems/decrease-elements-to-make-array-zigzag/
题目详述
给你一个整数数组 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:
1 | 输入:nums = [1,2,3] |
示例 2:
1 | 输入:nums = [9,6,1,6,2] |
提示:
- 1 <= nums.length <= 1000
- 1 <= nums[i] <= 1000
题目详解
根据题意,只能将元素减小,有两种解决方法:
- 减小偶数索引元素,存在一个使他小于相邻元素的最小操作次数,即减少到相邻元素较小值减一。
- 减小奇数索引元素,存在一个使他小于相邻元素的最小操作次数,即减少到相邻元素较小值减一。
二者较小值就是结果。
1 | public class LeetCode_01144 { |