diff --git a/cpp/2305/LC230502.cpp b/cpp/2305/LC230502.cpp new file mode 100644 index 0000000..9ddb41f --- /dev/null +++ b/cpp/2305/LC230502.cpp @@ -0,0 +1,28 @@ +#include +#include + +/** + * 1822. Sign of the Product of an Array + * + * There is a function signFunc(x) that returns: + * + * 1 if x is positive. + * -1 if x is negative. + * 0 if x is equal to 0. + * You are given an integer array nums. Let product be the product of all values in the array nums. + * + * Return signFunc(product). + */ + +class LC230502 { +public: + static int arraySign(const std::vector&) noexcept; +}; + +inline constexpr int sgn(int x) noexcept { return (x >> 31) | !!x; } + +int LC230502::arraySign(const std::vector& n) noexcept { + return std::reduce(n.begin(), n.end(), 1, [](int x, int y) { + return sgn(x) * sgn(y); + }); +} diff --git a/cpp/2305/defs.h b/cpp/2305/defs.h index fa34b8b..f6a9f69 100644 --- a/cpp/2305/defs.h +++ b/cpp/2305/defs.h @@ -19,5 +19,9 @@ public: static std::vector powerfulIntegers(int, int, int) noexcept; }; +class LC230502 { +public: + static int arraySign(const std::vector&) noexcept; +}; #endif //LEETCODE_CPP_DEFS_H