1. 题目
2. 思路
- 先统计每一天所需要的展台数量;
- 再选取每一种展台的最大数量;
- 最后将每一种展台的最大数量加和返回。
- 以测试用例1为例,结合这张图会比较好理解。
3. 代码实现
/**
* @param {string[]} demand
* @return {number}
*/
var minNumBooths = function(demand) {
// 索引为字母在字母表中的位置,值为出现的个数
let arr = new Array(26).fill(0)
for (let str of demand) {
let map = new Map()
for (let i = 0; i < str.length; i++) {
let key = str.charCodeAt(i) - 97
map.set(key, (map.get(key) || 0) + 1)
}
for (let [key, val] of map) {
arr[key] = Math.max(val, arr[key])
}
}
let cnt = 0
arr.forEach(item => cnt += item)
return cnt
};