diff options
Diffstat (limited to 'other/find_orig_array_double.cpp')
-rw-r--r-- | other/find_orig_array_double.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/other/find_orig_array_double.cpp b/other/find_orig_array_double.cpp new file mode 100644 index 0000000..a434616 --- /dev/null +++ b/other/find_orig_array_double.cpp @@ -0,0 +1,19 @@ +#include "leetcode.h" + +class Solution { +public: + vector<int> findOriginalArray(vector<int> &changed) { + int count[100001] = {}, i = 0; + vector<int> ans; + for (auto n : changed) + ++count[n]; + for (int i = 0; i <= 50000; ++i) + if (count[i]) { + if (--count[i * 2] < 0 || --count[i] < 0) + return {}; + ans.push_back(i--); + } + return accumulate(begin(count) + 50000, end(count), 0ll) ? vector<int>() + : ans; + } +}; |