class Solution {
public:
int movesToMakeZigzag(vector<int>& nums) {
vector<int> res{0, 0};
for(int i = 0; i < nums.size(); i++){
int left = i ? nums[i - 1]: INT_MAX;
int right = i < nums.size() - 1 ? nums[i + 1]: INT_MAX;
res[i % 2] += max(0, nums[i] - min(left, right) + 1);
}
return *min_element(res.begin(), res.end());
}
};
Python 代码
class Solution:
def movesToMakeZigzag(self, nums: List[int]) -> int:
s = [0] * 2
for i, x in enumerate(nums):
left = nums[i - 1] if i else inf
right = nums[i + 1] if i < len(nums) - 1 else inf
s[i % 2] += max(0, x - min(left, right) + 1)
return min(s)