From 185ef9fcb0e59f13e9ee0ccb261693cdaddebab0 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 23 Feb 2021 21:07:19 +0800 Subject: import(solutions): Move leetcode solutions to subdir. --- works/solutions/leetcode/cpp/1144.cpp | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 works/solutions/leetcode/cpp/1144.cpp (limited to 'works/solutions/leetcode/cpp/1144.cpp') diff --git a/works/solutions/leetcode/cpp/1144.cpp b/works/solutions/leetcode/cpp/1144.cpp new file mode 100644 index 0000000..e6bf83b --- /dev/null +++ b/works/solutions/leetcode/cpp/1144.cpp @@ -0,0 +1,48 @@ +#include + +using std::vector; + +inline int min(int a, int b) +{ + return a < b ? a : b; +} + +class Solution +{ +public: + int movesToMakeZigzag(vector &nums) + { + int size = nums.size(); + + if (size == 1) + return 0; + + // odd + int result_odd = 0; + for (int i = 0; i < size; i += 2) + { + int neighber = 1001; + if (i - 1 >= 0) + neighber = min(neighber, nums[i - 1]); + if (i + 1 < size) + neighber = min(neighber, nums[i + 1]); + if (nums[i] >= neighber) + result_odd += nums[i] - neighber + 1; + } + + // even + int result_even = 0; + for (int i = 1; i < size; i += 2) + { + int neighber = 1001; + if (i - 1 >= 0) + neighber = min(neighber, nums[i - 1]); + if (i + 1 < size) + neighber = min(neighber, nums[i + 1]); + if (nums[i] >= neighber) + result_even += nums[i] - neighber + 1; + } + + return min(result_odd, result_even); + } +}; -- cgit v1.2.3