方法一 哈希Map
用两个Map集合分别统计target和arr里出现的元素和出现的次数,在比较两个Map集合看是否出现的元素和次数都相同
var canBeEqual = function(target, arr) {let map1 = new Map();let map2 = new Map();for (let item of target) {map1.set(item, (map1.get(item) || 0) + 1);}for (let item of arr) {map2.set(item, (map2.get(item) || 0) + 1); }if (map1.size !== map2.size) {return false;}for (let [key, value] of map1.entries()) {if (!map2.has(key) || map2.get(key) !== value) {return false;}}return true;
};
消耗时间和内存情况:
方法二 sort()排序
将target和arr都按从小到大排序,再转为字符串看是否为相同字符串
var canBeEqual = function(target, arr) {target.sort((a, b) => a - b);arr.sort((a, b) => a - b);return target.toString() === arr.toString();
};
消耗时间和内存情况: