【Leetcode】2923. 找到冠军 I

题目

题目链接🔗
一场比赛中共有 n n n 支队伍,按从 0 0 0 n − 1 n - 1 n1 编号。

给你一个下标从 0 0 0 开始、大小为 n ∗ n n * n nn 的二维布尔矩阵 g r i d grid grid 。对于满足 0 ≤ i , j ≤ n − 1 0 \leq i, j \leq n - 1 0i,jn1 i ≠ j i \neq j i=j 的所有 i , j i, j i,j :如果 g r i d [ i ] [ j ] = = 1 grid[i][j] == 1 grid[i][j]==1,那么 i i i 队比 j j j ;否则, j j j 队比 i i i

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

返回这场比赛中将会成为冠军的队伍。

示例 1
输入:grid = [[0,1],[0,0]]
输出:0
解释:比赛中有两支队伍。
grid[0][1] == 1 表示 0 队比 1 队强。所以 0 队是冠军。

示例 2
输入:grid = [[0,0,1],[1,0,1],[0,0,0]]
输出:1
解释:比赛中有三支队伍。
grid[1][0] == 1 表示 1 队比 0 队强。
grid[1][2] == 1 表示 1 队比 2 队强。
所以 1 队是冠军。

提示

  • n = = g r i d . l e n g t h n == grid.length n==grid.length
  • n = = g r i d [ i ] . l e n g t h n == grid[i].length n==grid[i].length
  • 2 ≤ n ≤ 100 2 \leq n \leq 100 2n100
  • g r i d [ i ] [ j ] grid[i][j] grid[i][j] 的值为 0 0 0 1 1 1
  • 对于所有 i i i g r i d [ i ] [ i ] grid[i][i] grid[i][i] 等于 0 0 0.
  • 对于满足 i ≠ j i \neq j i=j 的所有 i , j i, j i,j g r i d [ i ] [ j ] ≠ g r i d [ j ] [ i ] grid[i][j] \neq grid[j][i] grid[i][j]=grid[j][i]均成立
  • 生成的输入满足:如果 a a a 队比 b b b 队强, b b b 队比 c c c 队强,那么 a a a 队比 c c c 队强

思路

冠军应该比其他所有球队都强,根据这一个特性可以知道会有一个队伍和其他队伍的比较肯定是全部是 1 1 1,所以只需要遍历整个矩阵观察哪一行全部都是 1 1 1就可以了,当然这个队伍和自己比较的时候还是 0 0 0,这里特殊处理一下就好

代码

class Solution {
public:
    int findChampion(vector<vector<int>>& grid) {
        int len=grid.size();
        bool pd=1;
        for(int i=0;i<len;++i)
        {
            pd=1;
            for(int j=0;j<len;++j)
            {
                if(i==j)continue;
                if(grid[i][j]==0)
                {
                    pd=0;
                    break;
                }
            }
            if(pd)return i;
        }
        return len;
    }
};

复杂度分析

时间复杂度

O ( n 2 ) O(n^2) O(n2)

空间复杂度

O(1)

结果

在这里插入图片描述

总结

遍历每支队伍,检查是否存在比它强的队伍来找到冠军队伍。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

想要AC的dly

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

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

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

打赏作者

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

抵扣说明:

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

余额充值