Decrease Elements To Make Array Zigzag LeetCode solution in C++

1
class Solution {
2
public:
3
int movesToMakeZigzag(vector<int> &nums) {
4
int even = 0, odd = 0;
5

6
if (nums.size() <= 1) return 0;
7

8
/* Even indices are smaller */
9
for (int i = 0; i < nums.size(); i += 2) {
10
if (i == 0) {
11
if (nums[i] >= nums[i + 1]) even += nums[i] - nums[i + 1] + 1;
12
} else if (i == nums.size() - 1) {
13
if (nums[i - 1] <= nums[i]) even += nums[i] - nums[i - 1] + 1;
14
} else {
15
if (nums[i - 1] <= nums[i] || nums[i + 1] <= nums[i]) {
16
even += nums[i] - min(nums[i - 1], nums[i + 1]) + 1;
17
}
18
}
19
}
20

21
/* Odd indices are smaller */
22
for (int i = 1; i < nums.size(); i += 2) {
23
if (i == nums.size() - 1) {
24
if (nums[i - 1] <= nums[i]) odd += nums[i] - nums[i - 1] + 1;
25
} else {
26
if (nums[i - 1] <= nums[i] || nums[i + 1] <= nums[i]) {
27
odd += nums[i] - min(nums[i - 1], nums[i + 1]) + 1;
28
}
29
}
30
}
31

32
return min(even, odd);
33
}
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0