一个开发团队有若干人, 团队成员来自五湖四海,其中有一个同事来自同一个地方,我们随机采访部分同事,受采访者告诉你有多少同事和他来自同一个地方,根据受访者的回答计算出团队的最小人数;
例:
输入: array = [0,0,1,1,1,2,2]
输出: 9
输入: array = [0,0,1,1,0]
输出: 5
输入: array = [6,6,6,6]
输出: 7
根据要求完成编码,提供getMinNumber(array),函数,要求考虑编码的可读性、性能.
解答:
析:以[1,1,1,1,5] 5 + 5 = 10为例
因为有4个人回答的1,那么最起码有5个人。
function getMinNumber(array) {//统计maplet map = new Map();//统计元素个数array.forEach((item, index, array) => {if (map.has(item)) {map.set(item, map.get(item) + 1);return true;}map.set(item, 1);});//最小人数let totalMin = 0;map.forEach((value, key, map) => {//回答当前数字的最小人数let currentMin;//当前数字同组最小人数let groupMin = key + 1;if (value > groupMin) {if (value % groupMin == 0) {currentMin = value;} else {currentMin = value - (value % groupMin) + groupMin;}} else {currentMin = groupMin;}totalMin += currentMin;});return totalMin;}
