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/11.cpp | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 works/solutions/leetcode/cpp/11.cpp (limited to 'works/solutions/leetcode/cpp/11.cpp') diff --git a/works/solutions/leetcode/cpp/11.cpp b/works/solutions/leetcode/cpp/11.cpp new file mode 100644 index 0000000..44a8fd9 --- /dev/null +++ b/works/solutions/leetcode/cpp/11.cpp @@ -0,0 +1,42 @@ +#include +#include + +using std::vector; + +class Solution +{ +public: + int maxArea(vector &height) + { + auto left = height.cbegin(); + auto right = height.cend(); + --right; + + int result = 0; + + // although length could be calculated by right - left, + // but this can be cached in register. + int length = height.size() - 1; + + while (left != right) + { + const int left_v = *left; + const int right_v = *right; + const int capacity = std::min(left_v, right_v) * length; + result = std::max(capacity, result); + + if (left_v < right_v) + { + ++left; + } + else + { + --right; + } + + length--; + } + + return result; + } +}; -- cgit v1.2.3