统计数组或字符串重复数字数量的时候使用哈希表
- 这种方法性能好,而且容易理解,且不易出错
- 不能用来统计连续出现的次数
1 2 3 4 5 6 7 8 9 10 11
| // 相同牌出现次数Map let timeMap = new Map();
// 遍历牌 deck.forEach(num => { // 统计每张牌出现的次数 timeMap.set(num, timeMap.has(num) ? timeMap.get(num) + 1 : 1); });
// Map.prototype.values()返回的是一个新的Iterator对象,所以可以使用扩展运算符(...)来构造成数组 let timeAry = [...timeMap.values()];
|
相关题目 卡片分组 leetcode 914
- 计算连续出现次数的方法(自己写的,很垃圾,看见好的会更新)
1 2 3 4 5 6 7 8 9 10 11 12
| "1122233334444" var arr = s.split(""); var arrSame = []; var length = 1 for (var i = 0; i < arr.length; i++) { if(arr[i]!==arr[i+1]||(!arr[i+1])){ arrSame.push(length) length = 1 }else{ length++ } }
|
相关题目 计数二进制子串 leetcode 696
辗转相除法 欧几里得算法
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
1 2 3 4 5 6 7
| function ojld(chushu, yushu) { if(chushu % yushu === 0){ return yushu }else{ return ojld(yushu, chushu % yushu) } }
|
单调栈的讲解与应用