1688:比赛中的配对次数
This commit is contained in:
parent
6d397ff0d9
commit
bc4ab8d930
@ -0,0 +1,79 @@
|
|||||||
|
//给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。
|
||||||
|
// 如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1
|
||||||
|
// 支队伍进入下一轮。
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 返回在比赛中进行的配对次数,直到决出获胜队伍为止。
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 示例 1:
|
||||||
|
//
|
||||||
|
// 输入:n = 7
|
||||||
|
//输出:6
|
||||||
|
//解释:比赛详情:
|
||||||
|
//- 第 1 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
|
||||||
|
//- 第 2 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
|
||||||
|
//- 第 3 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
|
||||||
|
//总配对次数 = 3 + 2 + 1 = 6
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 示例 2:
|
||||||
|
//
|
||||||
|
// 输入:n = 14
|
||||||
|
//输出:13
|
||||||
|
//解释:比赛详情:
|
||||||
|
//- 第 1 轮:队伍数 = 14 ,配对次数 = 7 ,7 支队伍晋级。
|
||||||
|
//- 第 2 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
|
||||||
|
//- 第 3 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
|
||||||
|
//- 第 4 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
|
||||||
|
//总配对次数 = 7 + 3 + 2 + 1 = 13
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 提示:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 1 <= n <= 200
|
||||||
|
//
|
||||||
|
// Related Topics 数学 模拟 👍 57 👎 0
|
||||||
|
|
||||||
|
package leetcode.editor.cn;
|
||||||
|
|
||||||
|
//1688:比赛中的配对次数
|
||||||
|
public class CountOfMatchesInTournament {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Solution solution = new CountOfMatchesInTournament().new Solution();
|
||||||
|
// TO TEST
|
||||||
|
}
|
||||||
|
|
||||||
|
//leetcode submit region begin(Prohibit modification and deletion)
|
||||||
|
class Solution {
|
||||||
|
public int numberOfMatches(int n) {
|
||||||
|
// 总配对次数
|
||||||
|
int sum = 0;
|
||||||
|
while (n > 1) {
|
||||||
|
if (n % 2 == 1) {
|
||||||
|
// 奇数队伍
|
||||||
|
// 配对次数:(n - 1) / 2
|
||||||
|
sum += (n - 1) / 2;
|
||||||
|
// 剩余队伍数:(n - 1) / 2 + 1
|
||||||
|
n = (n - 1) / 2 + 1;
|
||||||
|
} else {
|
||||||
|
// 偶数队伍
|
||||||
|
// 配对次数:n / 2
|
||||||
|
sum += n / 2;
|
||||||
|
// 剩余队伍数:n / 2
|
||||||
|
n /= 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//leetcode submit region end(Prohibit modification and deletion)
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
<p>给你一个整数 <code>n</code> ,表示比赛中的队伍数。比赛遵循一种独特的赛制:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>如果当前队伍数是 <strong>偶数</strong> ,那么每支队伍都会与另一支队伍配对。总共进行 <code>n / 2</code> 场比赛,且产生 <code>n / 2</code> 支队伍进入下一轮。</li>
|
||||||
|
<li>如果当前队伍数为 <strong>奇数</strong> ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 <code>(n - 1) / 2</code> 场比赛,且产生 <code>(n - 1) / 2 + 1</code> 支队伍进入下一轮。</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>返回在比赛中进行的配对次数,直到决出获胜队伍为止。</p>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>示例 1:</strong></p>
|
||||||
|
|
||||||
|
<pre><strong>输入:</strong>n = 7
|
||||||
|
<strong>输出:</strong>6
|
||||||
|
<strong>解释:</strong>比赛详情:
|
||||||
|
- 第 1 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
|
||||||
|
- 第 2 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
|
||||||
|
- 第 3 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
|
||||||
|
总配对次数 = 3 + 2 + 1 = 6
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><strong>示例 2:</strong></p>
|
||||||
|
|
||||||
|
<pre><strong>输入:</strong>n = 14
|
||||||
|
<strong>输出:</strong>13
|
||||||
|
<strong>解释:</strong>比赛详情:
|
||||||
|
- 第 1 轮:队伍数 = 14 ,配对次数 = 7 ,7 支队伍晋级。
|
||||||
|
- 第 2 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
|
||||||
|
- 第 3 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
|
||||||
|
- 第 4 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
|
||||||
|
总配对次数 = 7 + 3 + 2 + 1 = 13
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>提示:</strong></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><code>1 <= n <= 200</code></li>
|
||||||
|
</ul>
|
||||||
|
<div><div>Related Topics</div><div><li>数学</li><li>模拟</li></div></div><br><div><li>👍 57</li><li>👎 0</li></div>
|
Loading…
Reference in New Issue
Block a user