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

news/2024/12/22 2:37:43/

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

  • 题目描述:
  • 解题思路一:找到没有1存在的列即可。
  • 解题思路二:找到和等于n-1的行。
  • 解题思路三:打擂台【时间复杂度:O(n)】

题目描述:

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

class Solution:def findChampion(self, grid: List[List[int]]) -> int:n = len(grid)for j in range(n):flag = Falsefor i in range(n):if grid[i][j] == 1:flag = Truebreakif not flag:return jreturn 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的行。

在这里插入图片描述

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)】

在这里插入图片描述

class Solution:def findChampion(self, grid: List[List[int]]) -> int:ans = 0for i, row in enumerate(grid):if row[ans]:ans = ireturn ans

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


http://www.ppmy.cn/news/1424444.html

相关文章

基于双向长短期神经网络BILSTM的线损率预测,基于gru的线损率预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 基于双向长短期神经网络BILSTM的线损率预测,基于gru的线损率预测 完整代码:基于双向长短期神经网络BILSTM的线损率预测,基于gru的线损率预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/d…

可持续测试自动化应遵循的最佳实践

缺乏可持续性是整个行业测试自动化崩溃的首要原因。测试团队陷入了自动化维护的恶性循环&#xff0c;却无法从练习中获益。虽然团队不断追赶以保持脚本完整&#xff0c;但目标却退居二线。虽然测试自动化在上述背景下已经成为游戏规则的改变者&#xff0c;使开发人员能够简化他…

谈谈前端CSS盒模型

前言&#xff1a; 什么是CSS盒模型&#xff1f;盒模型的构造&#xff1f; 在前端开发中&#xff0c;CSS 盒模型是一种非常基础且核心的概念&#xff0c;它描述了文档中的每个元素被框架处理的方式。 ---- 打开浏览器开发者工具&#xff0c;查看Elements右侧下的Styles底部。 …

JAVA 集合框架(一) Collection集合详解和常用方法

Java集合框架&#xff08;Java Collections Framework&#xff09;是一个强大的、高度灵活的数据结构库&#xff0c;它为Java应用程序提供了组织、存储和操作对象集合的标准方法。 集合类体系结构 接口类&#xff1a; Collection: 是单例集合类的顶层接口&#xff0c;包括Lis…

华为OD-C卷-伐木工[200分]Python3-100%

题目描述 一根X米长的树木,伐木工切割成不同长度的木材后进行交易,交易价格为每根木头长度的乘积。 规定切割后的每根木头长度都为正整数;也可以不切割,直接拿整根树木进行交易。 请问伐木工如何尽量少的切割,才能使收益最大化? 输入描述 木材的长度(X ≤ 50) 输出描…

OpenHarmony轻量系统开发【8】其它驱动开发示例

8.1代码示例 OpenHarmony代码中&#xff0c;Hi3861提供了绝大部分的驱动示例代码&#xff0c;文件路径&#xff1a; device\soc\hisilicon\hi3861v100\sdk_liteos\app\demo\src 开发者可以参考&#xff0c;文件如下&#xff1a; 8.2如何使用 &#xff08;1&#xff09;创建文…

安全中级-初开始

一、网络基础 重要点&#xff1a;TTL值&#xff08;防环&#xff0c;linux64.Windows128 &#xff09;&#xff0c;IP数据包包头格式字节&#xff08;20&#xff09; 标识标志偏移量起到什么作用&#xff08;数据超过1500会分片&#xff09; wireshack抓包会有一个MSS&#x…

项目7-音乐播放器1+BCrypt加密

1.创建项目 1.1 引入依赖 1.2 yml相关配置 application.yml spring:profiles:active: prod mybatis:mapper-locations: classpath:mapper/**Mapper.xmlconfiguration:map-underscore-to-camel-case: true #配置驼峰⾃动转换log-impl: org.apache.ibatis.logging.stdout.StdO…