From 0c702901ccc86d908ce0bb77de5698f555b3c958 Mon Sep 17 00:00:00 2001 From: deadmarshal Date: Wed, 2 Nov 2022 14:15:24 +0330 Subject: challenge189 --- challenge-189/deadmarshal/cpp/ch-2.cpp | 51 ++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 challenge-189/deadmarshal/cpp/ch-2.cpp (limited to 'challenge-189/deadmarshal/cpp/ch-2.cpp') diff --git a/challenge-189/deadmarshal/cpp/ch-2.cpp b/challenge-189/deadmarshal/cpp/ch-2.cpp new file mode 100644 index 0000000000..ced6366898 --- /dev/null +++ b/challenge-189/deadmarshal/cpp/ch-2.cpp @@ -0,0 +1,51 @@ +#include +#include +#include + +void array_degree(const std::vector& vec) +{ + std::unordered_map left{},count{}; + std::size_t x{},min{},max{},index{}; + for(std::size_t i = 0; i < vec.size(); ++i) + { + x = vec[i]; + if(!count.contains(x)) + { + left[x] = i; + count[x] = 1; + } + else count[x]++; + + if(count[x] > max) + { + max = count[x]; + min = i - left[x] + 1; + index = left[x]; + } + else if((count[x] == max) && (i - left[x] + 1 < min)) + { + min = i - left[x] + 1; + index = left[x]; + } + } + + for(std::size_t i = index; i < index+min; ++i) + std::cout << vec[i] << ' '; + std::cout << '\n'; +} + +int main() +{ + std::vector + vec1{1,3,3,2}, + vec2{1,2,1,3}, + vec3{1,3,2,1,2}, + vec4{1,1,2,3,2}, + vec5{2,1,2,1,1}; + array_degree(vec1); + array_degree(vec2); + array_degree(vec3); + array_degree(vec4); + array_degree(vec5); + return 0; +} -- cgit