From 290cdd7b8e80ffe0862264a57f259dad75ce5f74 Mon Sep 17 00:00:00 2001 From: Eatswap Date: Wed, 27 Sep 2023 20:27:58 +0800 Subject: [PATCH] add: 230829 --- cpp/2308/LC230829.cpp | 25 +++++++++++++++++++++++++ cpp/2308/defs.h | 4 ++++ 2 files changed, 29 insertions(+) create mode 100644 cpp/2308/LC230829.cpp diff --git a/cpp/2308/LC230829.cpp b/cpp/2308/LC230829.cpp new file mode 100644 index 0000000..c8eb85b --- /dev/null +++ b/cpp/2308/LC230829.cpp @@ -0,0 +1,25 @@ +#include +#include +#include +#include + +class LC230829 { +public: + static int bestClosingTime(const std::string&); +}; + +int LC230829::bestClosingTime(const std::string& c) { + const std::size_t n = c.size(); + std::vector prefix(n), suffix(n); + prefix[0] = (c[0] == 'N'); + for (std::size_t i = 1; i < n; ++i) + prefix[i] = prefix[i - 1] + (c[i] == 'N'); + suffix[n - 1] = (c[n - 1] == 'Y'); + for (std::size_t i = n - 1; i--; ) + suffix[i] = suffix[i + 1] + (c[i] == 'Y'); + std::size_t ret = n, sum = std::count(c.begin(), c.end(), 'N'); + for (std::size_t i = 0; i < n; ++i) + if (auto s = prefix[i] + suffix[i] - (c[i] == 'N'); s < sum || (s == sum && i < ret)) + sum = s, ret = i; + return ret; +} diff --git a/cpp/2308/defs.h b/cpp/2308/defs.h index 61c40de..e8db557 100644 --- a/cpp/2308/defs.h +++ b/cpp/2308/defs.h @@ -21,5 +21,9 @@ public: bool empty(); }; +class LC230829 { +public: + static int bestClosingTime(const std::string&); +}; #endif //LEETCODE_CPP_DEFS_H