LeetCode-2923. 找到冠军 I【数组 矩阵】

LeetCode-2923. 找到冠军 I【数组 矩阵】

题目描述:

一场比赛中共有 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 队将会是 冠军 。

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

示例 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 == grid.length

n == grid[i].length

2 <= n <= 100

grid[i][j] 的值为 0 或 1

对于所有 i, grid[i][i] 等于 0.

对于满足 i != j 的所有 i, j ,grid[i][j] != grid[j][i] 均成立

生成的输入满足:如果 a 队比 b 队强,b 队比 c 队强,那么 a 队比 c 队强

解题思路一:找到没有1存在的列即可。

如果第 j 列的元素值都是 0,说明没有队伍可以击败 j 队,j 队是冠军。

python 复制代码
class Solution:
    def findChampion(self, grid: List[List[int]]) -> int:
        n = len(grid)
        for j in range(n):
            flag = False
            for i in range(n):
                if grid[i][j] == 1:
                    flag = True
                    break
            if not flag:
                return j
        return n-1
   
# 同意
class Solution:
    def findChampion(self, grid: List[List[int]]) -> int:
        for j, col in enumerate(zip(*grid)):
            if 1 not in col:
                return j

时间复杂度:O(n2)

空间复杂度:O(1)

解题思路二:找到和等于n-1的行。

python 复制代码
class Solution:
    def findChampion(self, grid: List[List[int]]) -> int:
        for i, row in enumerate(grid):
            if sum(row) == len(grid) - 1:
                return i

时间复杂度:O(n2)

空间复杂度:O(1)

解题思路三:打擂台【时间复杂度:O(n)】

python 复制代码
class Solution:
    def findChampion(self, grid: List[List[int]]) -> int:
        ans = 0
        for i, row in enumerate(grid):
            if row[ans]:
                ans = i
        return ans

时间复杂度:O(n)

空间复杂度:O(1)

相关推荐
智驱力人工智能2 小时前
基于视觉分析的人脸联动使用手机检测系统 智能安全管理新突破 人脸与手机行为联动检测 多模态融合人脸与手机行为分析模型
算法·安全·目标检测·计算机视觉·智能手机·视觉检测·边缘计算
2301_764441333 小时前
水星热演化核幔耦合数值模拟
python·算法·数学建模
循环过三天3 小时前
3.4、Python-集合
开发语言·笔记·python·学习·算法
priority_key5 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
不染尘.6 小时前
2025_11_7_刷题
开发语言·c++·vscode·算法
来荔枝一大筐7 小时前
力扣 寻找两个正序数组的中位数
算法
算法与编程之美7 小时前
理解Java finalize函数
java·开发语言·jvm·算法
地平线开发者7 小时前
LLM 训练基础概念与流程简介
算法·自动驾驶
点云SLAM7 小时前
弱纹理图像特征匹配算法推荐汇总
人工智能·深度学习·算法·计算机视觉·机器人·slam·弱纹理图像特征匹配
星释7 小时前
Rust 练习册 :Matching Brackets与栈数据结构
数据结构·算法·rust