1.问题描述
小R正在组织一个比赛,比赛中有 n 支队伍参赛。比赛遵循以下独特的赛制:
- 如果当前队伍数为 偶数,那么每支队伍都会与另一支队伍配对。总共进行
n / 2场比赛,且产生n / 2支队伍进入下一轮。 - 如果当前队伍数为 奇数,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行
(n - 1) / 2场比赛,且产生(n - 1) / 2 + 1支队伍进入下一轮。
小R想知道在比赛中进行的配对次数,直到决出唯一的获胜队伍为止。
2.测试样例
样例1:
输入:
n = 7
输出:6
样例2:
输入:
n = 14
输出:13
样例3:
输入:
n = 1
输出:0
3.代码实现
有点好笑这个问题。n个队伍获得一个冠军则需要淘汰掉n-1个队伍,因为每次配对必定伴随着一个队伍的淘汰,所以会进行n-1次配对。
function solution(n) {
return n-1;
}
function main() {
console.log(solution(7) === 6);
console.log(solution(14) === 13);
console.log(solution(1) === 0);
}
main();