From 8328c1ffda3227b8f80096be89bfdeea46c08ca2 Mon Sep 17 00:00:00 2001 From: Ace-Krypton Date: Sat, 30 Sep 2023 20:11:49 +0200 Subject: [PATCH] Added Unique Number of Occurrences --- CMakeLists.txt | 11 ++++++ .../include/solution.hpp | 19 +++++++++ Easy/UniqueNumberOfOccurrences/tests/test.cpp | 39 +++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 Easy/UniqueNumberOfOccurrences/include/solution.hpp create mode 100644 Easy/UniqueNumberOfOccurrences/tests/test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index cb1d3c8..758ca7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1140,4 +1140,15 @@ add_executable(FindTheDifferenceOfTwoArrays target_link_libraries( FindTheDifferenceOfTwoArrays GTest::gtest_main +) + +# Unique Number of Occurrences +add_executable(UniqueNumberOfOccurrences + Easy/UniqueNumberOfOccurrences/include/solution.hpp + Easy/UniqueNumberOfOccurrences/tests/test.cpp +) + +target_link_libraries( + UniqueNumberOfOccurrences + GTest::gtest_main ) \ No newline at end of file diff --git a/Easy/UniqueNumberOfOccurrences/include/solution.hpp b/Easy/UniqueNumberOfOccurrences/include/solution.hpp new file mode 100644 index 0000000..2cb6ced --- /dev/null +++ b/Easy/UniqueNumberOfOccurrences/include/solution.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include +#include +#include +#include + +class Solution { +public: + static auto unique_occurrences(const std::vector &arr) -> bool { + std::set freq; + std::unordered_map mp; + + for (const auto &element : arr) mp[element]++; + for (const auto &val : mp) freq.insert(val.second); + + return freq.size() == mp.size(); + } +}; diff --git a/Easy/UniqueNumberOfOccurrences/tests/test.cpp b/Easy/UniqueNumberOfOccurrences/tests/test.cpp new file mode 100644 index 0000000..0507d22 --- /dev/null +++ b/Easy/UniqueNumberOfOccurrences/tests/test.cpp @@ -0,0 +1,39 @@ +#include "../include/solution.hpp" + +class UniqueNumberOfOccurrences : public ::testing::Test { +protected: + ~UniqueNumberOfOccurrences() override = default; +}; + +TEST_F(UniqueNumberOfOccurrences, FirstTest) { + std::vector elements = {1, 2}; + + bool result = Solution::unique_occurrences(elements); + bool expected = false; + + ASSERT_EQ(result, expected); +} + +TEST_F(UniqueNumberOfOccurrences, SecondTest) { + std::vector elements = {1, 2, 2, 1, 1, 3}; + + bool result = Solution::unique_occurrences(elements); + bool expected = true; + + ASSERT_EQ(result, expected); +} + +TEST_F(UniqueNumberOfOccurrences, ThirdTest) { + std::vector elements = + {-3, 0, 1, -3, 1, 1, 1, -3, 10, 0}; + + bool result = Solution::unique_occurrences(elements); + bool expected = true; + + ASSERT_EQ(result, expected); +} + +auto main(int argc, char **argv) -> int { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}