解题思路或方法

统计数组或字符串重复数字数量的时候使用哈希表

  • 这种方法性能好,而且容易理解,且不易出错
  • 不能用来统计连续出现的次数
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)
}
}

单调栈的讲解与应用