diff --git a/include/common.h b/include/common.h index 20eba74..6789b63 100644 --- a/include/common.h +++ b/include/common.h @@ -61,27 +61,27 @@ inline void free(ListNode* head) { namespace compareHelper { -template -bool equalIgnoreOrder(std::vector a, std::vector b) { +template +bool equalIgnoreOrder(const V& a, const V& b) { if (a.size() != b.size()) return false; - std::ranges::sort(a); - std::ranges::sort(b); + V aa = a; + V bb = b; - return a == b; -} - -template -bool equalIgnoreOrder(std::vector> a, std::vector> b) { - if (a.size() != b.size()) return false; + using Elem = typename V::value_type; - for (auto& v : a) std::ranges::sort(v); - for (auto& v : b) std::ranges::sort(v); + if constexpr (requires(Elem e) { + e.begin(); + e.end(); + }) { + for (auto& v : aa) std::ranges::sort(v); + for (auto& v : bb) std::ranges::sort(v); + } - std::ranges::sort(a); - std::ranges::sort(b); + std::ranges::sort(aa); + std::ranges::sort(bb); - return a == b; + return aa == bb; } } // namespace compareHelper #endif // LEETCODE_COMMON_H