Skip to content

Commit 0e02e70

Browse files
authored
Merge pull request #5 from kwu130/refactor-common-header-file
refactor(common): optimize equalIgnoreOrder to support 2D nested cont…
2 parents 7135bdc + bb50f02 commit 0e02e70

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

‎include/common.h‎

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,27 +61,27 @@ inline void free(ListNode* head) {
6161

6262

6363
namespace compareHelper {
64-
template <typename T>
65-
bool equalIgnoreOrder(std::vector<T> a, std::vector<T> b) {
64+
template <typename V>
65+
bool equalIgnoreOrder(const V& a, const V& b) {
6666
if (a.size() != b.size()) return false;
6767

68-
std::ranges::sort(a);
69-
std::ranges::sort(b);
68+
V aa = a;
69+
V bb = b;
7070

71-
return a == b;
72-
}
73-
74-
template <typename T>
75-
bool equalIgnoreOrder(std::vector<std::vector<T>> a, std::vector<std::vector<T>> b) {
76-
if (a.size() != b.size()) return false;
71+
using Elem = typename V::value_type;
7772

78-
for (auto& v : a) std::ranges::sort(v);
79-
for (auto& v : b) std::ranges::sort(v);
73+
if constexpr (requires(Elem e) {
74+
e.begin();
75+
e.end();
76+
}) {
77+
for (auto& v : aa) std::ranges::sort(v);
78+
for (auto& v : bb) std::ranges::sort(v);
79+
}
8080

81-
std::ranges::sort(a);
82-
std::ranges::sort(b);
81+
std::ranges::sort(aa);
82+
std::ranges::sort(bb);
8383

84-
return a == b;
84+
return aa == bb;
8585
}
8686
} // namespace compareHelper
8787
#endif // LEETCODE_COMMON_H

0 commit comments

Comments
 (0)