From b40a7393cc9b19e13afc15b880a8a9850b11161b Mon Sep 17 00:00:00 2001 From: Lam Haoyin Date: Mon, 21 Feb 2022 01:29:57 +0800 Subject: [PATCH] add: 220220 [cpp] --- cpp/2202/220220.cpp | 31 +++++++++++++++++++++++++++++++ cpp/2202/CMakeLists.txt | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 cpp/2202/220220.cpp diff --git a/cpp/2202/220220.cpp b/cpp/2202/220220.cpp new file mode 100644 index 0000000..ce75756 --- /dev/null +++ b/cpp/2202/220220.cpp @@ -0,0 +1,31 @@ +#include +#include +#include + +class Solution { +public: + static int removeCoveredIntervals(std::vector>& intervals) { + std::sort(intervals.begin(), intervals.end(), [](const std::vector& x, const std::vector& y) { return (x[1] - x[0]) < (y[1] - y[0]); }); + int n = intervals.size(), ret = n; + bool* const vis = new bool[n]{}; + for (int i = 0; i < n; ++i) { + auto const& current = intervals[i]; + for (int j = 0; j < i; ++j) { + auto const& prev = intervals[j]; + // prev is included in current + if (!vis[j] && prev[0] >= current[0] && prev[1] <= current[1]) { + vis[j] = true; + --ret; + } + } + } + delete[] vis; + return ret; + } +}; + +int main() { + std::vector> args {{1, 4}, {3, 6}, {2, 8}}; + std::cout << Solution::removeCoveredIntervals(args); + return 0; +} diff --git a/cpp/2202/CMakeLists.txt b/cpp/2202/CMakeLists.txt index 3704970..5ac029e 100644 --- a/cpp/2202/CMakeLists.txt +++ b/cpp/2202/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2202) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2202 220219.cpp) +ADD_EXECUTABLE(2202 220220.cpp)