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/704.cpp | 79 ++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 works/solutions/leetcode/cpp/704.cpp (limited to 'works/solutions/leetcode/cpp/704.cpp') diff --git a/works/solutions/leetcode/cpp/704.cpp b/works/solutions/leetcode/cpp/704.cpp new file mode 100644 index 0000000..b56a01a --- /dev/null +++ b/works/solutions/leetcode/cpp/704.cpp @@ -0,0 +1,79 @@ +#include +#include + +class MyHashSet +{ + static const int max = 100; + +private: + std::unique_ptr> data_[max]; + +public: + /** Initialize your data structure here. */ + MyHashSet() + { + } + + void add(int key) + { + const auto index = key % max; + auto &ptr = data_[index]; + if (ptr == nullptr) + { + ptr.reset(new std::vector()); + } + + auto &v = *ptr; + for (auto d : v) + { + if (d == key) + return; + } + + v.push_back(key); + } + + void remove(int key) + { + const auto index = key % max; + auto &ptr = data_[index]; + if (ptr == nullptr) + return; + auto &v = *ptr; + const auto end = v.cend(); + for (auto iter = v.cbegin(); iter != end; ++iter) + { + if (*iter == key) + { + v.erase(iter); + return; + } + } + } + + /** Returns true if this set contains the specified element */ + bool contains(int key) + { + const auto index = key % max; + auto &ptr = data_[index]; + if (ptr == nullptr) + return false; + + const auto &v = *ptr; + for (auto d : v) + { + if (d == key) + return true; + } + + return false; + } +}; + +/** + * Your MyHashSet object will be instantiated and called as such: + * MyHashSet* obj = new MyHashSet(); + * obj->add(key); + * obj->remove(key); + * bool param_3 = obj->contains(key); + */ -- cgit v1.2.3