解题思路:
数学方法,等比数列求和,公比为2,不知道怎么求要几个回合,所以打算打个表,奇数加1
。。。。。
试着试着推公式呢,结果突然发现就是n-1.。。。编译了一下是对的。。。。其实就是打一场比赛淘汰一个队伍,n个队伍,要淘汰n-1个队伍,所以要打n-1场比赛。
就一整个挺无语的。。。。
代码:
class Solution:
def numberOfMatches(self, n: int) -> int:
return n-1
看到了几个其他的方法;
- 模拟进行,遇到偶数,除以二,次数加一半,遇到奇数,-1除以二,记录上比赛次数,知道n=1
- 递归,三目运算符。
int numberOfMatches(int n) {
if(n == 1) return 0;
return n % 2 == 0 ? n / 2 + numberOfMatches(n / 2) : n / 2 + numberOfMatches(n / 2 + 1);