From bb50f0284cb03a5dc616b90b1d91ff8023aee72e Mon Sep 17 00:00:00 2001 From: kwu130 Date: Sun, 23 Nov 2025 22:52:31 +0800 Subject: [PATCH] refactor(common): optimize equalIgnoreOrder to support 2D nested containers --- include/common.h | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) 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