前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 544. 输出比赛匹配对(NBA季后赛对阵图)

LeetCode 544. 输出比赛匹配对(NBA季后赛对阵图)

作者头像
Michael阿明
发布2020-07-13 14:49:18
9670
发布2020-07-13 14:49:18
举报

1. 题目

在 NBA 季后赛中,我们总是安排较强的队伍对战较弱的队伍,例如用排名第 1 的队伍和第 n 的队伍对决,这是一个可以让比赛更加有趣的好策略。 现在,给你 n 支队伍,你需要以字符串格式输出它们的 最终 比赛配对。

n 支队伍按从 1 到 n 的正整数格式给出,分别代表它们的初始排名(排名 1 最强,排名 n 最弱)。 我们用括号('(', ')')和逗号(',')来表示匹配对——括号('(', ')')表示匹配,逗号(',')来用于分割。 在每一轮的匹配过程中,你都需要遵循将强队与弱队配对的原则。

代码语言:javascript
复制
示例 1:
输入: 2
输出: (1,2)
解析: 
初始地,我们有队1和队2两支队伍,按照1,2排列。
因此 用 '(', ')' 和 ','来将队1和队2进行配对,得到最终答案。

示例 2:
输入: 4
输出: ((1,4),(2,3))
解析: 
在第一轮,我们将队伍1和4配对,2和3配对,以满足将强队和弱队搭配的效果。
得到(1,4),(2,3).
在第二轮,(1,4) 和 (2,3) 的赢家需要进行比赛以确定最终赢家,
因此需要再在外面加一层括号。
于是最终答案是((1,4),(2,3))。

示例 3:
输入: 8
输出: (((1,8),(4,5)),((2,7),(3,6)))
解析: 
第一轮: (1,8),(2,7),(3,6),(4,5)
第二轮: ((1,8),(4,5)),((2,7),(3,6))
第三轮 (((1,8),(4,5)),((2,7),(3,6)))
由于第三轮会决出最终胜者,故输出答案为(((1,8),(4,5)),((2,7),(3,6)))。
 
注意:
n 的范围是 [2, 212].
保证 n 可以写成 2k 的形式,其中 k 是正整数。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/output-contest-matches 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

在这里插入图片描述
在这里插入图片描述

看过NBA的都懂的,哈哈!???

代码语言:javascript
复制
class Solution {
public:
    string findContestMatch(int n) {
        int l = 1, r = n, t = 0;
        while(n>1)
        {
        	t++;//比赛几轮结束
        	n >>= 1;
        }
        vector<string> ans, temp;
        while(l < r)
        	ans.push_back("("+to_string(l++)+","+to_string(r--)+")");
        while(--t)
        {
        	l = 0, r = ans.size()-1;//l侧强,r侧弱
        	while(l < r)
        		temp.push_back("("+ans[l++]+","+ans[r--]+")");
        	ans = temp;
        	temp.clear();
        }
        return ans[0];
    }
};

12 ms 10.3 MB

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档