前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一道 LeetCode 周赛的题目,让我自信满满!

一道 LeetCode 周赛的题目,让我自信满满!

作者头像
五分钟学算法
发布2021-02-07 16:26:12
7950
发布2021-02-07 16:26:12
举报
文章被收录于专栏:五分钟学算法

大家好,我是程序员吴师兄。

很多人刷题一段时间后会进入疲倦期,我建议不妨参加一下 LeetCode 的周赛调节一下心情,周赛总共有四题,一简单两中等一困难,难度逐级上升,难的真的很难,一个小时做不出来很正常,简单的有时候会让你怀疑是不是看错题目,即使你刚学习算法不久也能做出来。

今天就给大家分享一道 LeetCode 周赛的题目,希望能鼓励你开始周赛之旅。

比如说第 219 场周赛的第一题:

题目描述是这样子的(为了更友好的阅读体验,建议你一字不漏的阅读完题目)。

给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:

如果当前队伍数是偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。 如果当前队伍数为奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生(n - 1) / 2 + 1 支队伍进入下一轮。 返回在比赛中进行的配对次数,直到决出获胜队伍为止。

示例 1:

代码语言:javascript
复制
输入:n = 7
输出:6
解释:比赛详情:
- 第 1 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
- 第 2 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
- 第 3 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
总配对次数 = 3 + 2 + 1 = 6

示例 2:

代码语言:javascript
复制
输入: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、按部就班法

直接根据题意进行分类讨论,如果此时比赛队伍为偶数直接除 2 记录为比赛次数,晋级的队伍为n/2 ,如果此时比赛队伍为奇数则先减一,让剩下的队伍配对,次数为(( n - 1 ) /2) ,晋级的队伍为n/2 + 1

代码语言:javascript
复制
class Solution {
    public int numberOfMatches(int n) {
        int res = 0;
        while(n > 1){
            if(n % 2==0){
                n/=2;
                res += n;
            }else{
                res += (( n - 1 ) /2);
                n = n/2 + 1;
            }
        }
        return res;
    }
}

2、无脑递归法

代码语言:javascript
复制
class Solution {
public:
    int numberOfMatches(int n) {
        if( n == 1) return 0;
        return n/2 + numberOfMatches((n+1)/2);
    }
};

3、不讲武德法

冠军只有一个,意味着 n - 1 个队伍需要淘汰,而每场比赛只能淘汰一个队伍,换言之需要淘汰 n - 1 个队伍需要比赛 n - 1 次,所以,答案出来了,一行代码 AC。

代码语言:javascript
复制
class Solution {
    public int numberOfMatches(int n) {
        return n-1;
    }
}

是不是感觉我上我也行,有兴趣的小伙伴不妨去参与一下,说不定能拿个奖~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五分钟学算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、按部就班法
  • 2、无脑递归法
  • 3、不讲武德法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档