給你一個整數 n ,表示比賽中的隊伍數。比賽遵循一種獨特的賽制:
如果當前隊伍數是 偶數 ,那么每支隊伍都會與另一支隊伍配對。總共進行 n / 2 場比賽,且產生 n / 2 支隊伍進入下一輪。
如果當前隊伍數為 奇數 ,那么將會隨機輪空并晉級一支隊伍,其余的隊伍配對。總共進行 (n - 1) / 2 場比賽,且產生 (n - 1) / 2 + 1 支隊伍進入下一輪。
返回在比賽中進行的配對次數,直到決出獲勝隊伍為止。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/count-of-matches-in-tournament
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
代碼一
根據題目描述:
class Solution { public int numberOfMatches(int n) {int res = 0;int i = n;while(i != 1){if(i%2==0){i = i/2;res += i;}else{i = i/2+1;res += i-1;}}return res;}
}
代碼二:
由于每比賽一次就會淘汰一支隊伍,最后冠軍只有一個,故一共有n-1個隊伍淘汰,一共比賽n-1場。
腦筋急轉彎啊
class Solution { public int numberOfMatches(int n) {return n-1;}
}