思维题,LeetCode 2923. 找到冠军 I

该篇文章介绍了一个编程问题,给定一个n*n的布尔矩阵,表示队伍之间的实力关系。通过遍历矩阵寻找最强的队伍,如果不存在更强的队伍,则冠军为0号队伍。算法的时间复杂度为O(n),空间复杂度也为O(n)。
摘要由CSDN通过智能技术生成

一、题目

1、题目描述

一场比赛中共有 n 支队伍,按从 0 到  n - 1 编号。

给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 <= i, j <= n - 1 且 i != j 的所有 i, j :如果 grid[i][j] == 1,那么 i 队比 j 队  ;否则,j 队比 i 队  。

在这场比赛中,如果不存在某支强于 a 队的队伍,则认为 a 队将会是 冠军 。

返回这场比赛中将会成为冠军的队伍。2923. 找到冠军 I

2、接口描述

python3
class Solution:
    def findChampion(self, grid: List[List[int]]) -> int:
cpp
class Solution {
public:
    int findChampion(vector<vector<int>>& grid) {
        
    }
};

3、原题链接

2923. 找到冠军 I


二、解题报告

1、思路分析

我们假定冠军是0

那么从第一行开始枚举 i ,如果grid[i][0] = 1,那么更新冠军为i,继续从i + 1行找比i强的

因为前i - 1行没有比0强的,而i强于0,故从i + 1行接着枚举即可

2、复杂度

时间复杂度: O(n)空间复杂度:O(n)

3、代码详解

python3
class Solution:
    def findChampion(self, grid: List[List[int]]) -> int:
        ret = 0
        for i, row in enumerate(grid):
            if row[ret]:
                ret = i
        return ret
        
cpp
class Solution {
public:
    int findChampion(vector<vector<int>>& grid) {
        int ret = 0;
        for(int i = 1, n = grid.size(); i < n; i++)
            if(grid[i][ret]) ret = i;
        return ret;
    }
};

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EQUINOX1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值