LeetCode 每日一题 [1688]比赛中的配对次数
给你一个整数
n
,表示比赛中的队伍数。比赛遵循一种独特的赛制:
- 如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行
n / 2
场比赛,且产生n / 2
支队伍进入下一轮。- 如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行
(n - 1) / 2
场比赛,且产生(n - 1) / 2 + 1
支队伍进入下一轮。返回在比赛中进行的配对次数,直到决出获胜队伍为止。
一看简单题,AC率84.1%,直接重拳出击
class Solution {
public int numberOfMatches(int n) {
int index = 0;
while (n != 1) {
if (n % 2 == 0) {
n = n/2;
index += n;
} else {
n = n/2;
index += n;
n++;
}
}
return index;
}
}
直接提交,嘴角微微上扬,今晚注定会做个好梦
结果:
翻开了题解看了一下:
class Solution {
public int numberOfMatches(int n) {
return n - 1;
}
}
n支队伍,每场比赛淘汰一个队伍最后只留一支,所以是n-1场比赛。
时间复杂度:O(1)
空间复杂度:O(1)
原答案:
时间复杂度:O(logn)
空间复杂度:O(1)