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 != j
的所有 i, j
,grid[i][j] != grid[j][i]
均成立a
队比 b
队强,b
队比 c
队强,那么 a
队比 c
队强原站题解
golang 解法, 执行用时: 53 ms, 内存消耗: 6.8 MB, 提交时间: 2024-04-12 09:06:15
func findChampion(grid [][]int) (ans int) { for i, row := range grid { if row[ans] == 1 { ans = i } } return }
javascript 解法, 执行用时: 63 ms, 内存消耗: 53.9 MB, 提交时间: 2024-04-12 09:05:55
/** * @param {number[][]} grid * @return {number} */ var findChampion = function(grid) { let ans = 0; for (let i = 1; i < grid.length; i++) { if (grid[i][ans]) { ans = i; } } return ans; };
rust 解法, 执行用时: 0 ms, 内存消耗: 2.2 MB, 提交时间: 2024-04-12 09:05:41
impl Solution { pub fn find_champion(grid: Vec<Vec<i32>>) -> i32 { let mut ans = 0; for (i, row) in grid.iter().enumerate() { if row[ans] == 1 { ans = i; } } ans as _ } }
rust 解法, 执行用时: 4 ms, 内存消耗: 2 MB, 提交时间: 2024-04-12 09:05:23
impl Solution { pub fn find_champion(grid: Vec<Vec<i32>>) -> i32 { for j in 0.. { let mut ok = true; for row in &grid { if row[j] != 0 { ok = false; break; } } if ok { return j as _; } } unreachable!() } }
python3 解法, 执行用时: 46 ms, 内存消耗: 17.1 MB, 提交时间: 2024-04-12 09:05:00
class Solution: def findChampion(self, grid: List[List[int]]) -> int: for j, col in enumerate(zip(*grid)): if 1 not in col: return j
php 解法, 执行用时: 184 ms, 内存消耗: 21.3 MB, 提交时间: 2023-11-06 16:25:09
class Solution { /** * @param Integer[][] $grid * @return Integer */ function findChampion($grid) { $n = count($grid); for ( $i = 0; ; $i++ ) { $ok = true; for ( $j = 0; $j < $n; $j++ ) { if ( ($i != $j) && $grid[$i][$j] == 0 ) { $ok = false; break; } } if ( $ok ) { return $i; } } } }
cpp 解法, 执行用时: 80 ms, 内存消耗: 35.8 MB, 提交时间: 2023-11-06 16:23:19
class Solution { public: int findChampion(vector<vector<int>>& grid) { int n = grid.size(); for (int j = 0; ; j++) { bool ok = true; for (int i = 0; i < n; i++) { if (i != j && grid[i][j] != 0) { // 有队伍可以击败 j ok = false; break; } } if (ok) { return j; } } } };
java 解法, 执行用时: 1 ms, 内存消耗: 43 MB, 提交时间: 2023-11-06 16:22:25
class Solution { public int findChampion(int[][] grid) { int n = grid.length; for (int j = 0; ; j++) { boolean ok = true; for (int i = 0; i < n; i++) { if (i != j && grid[i][j] != 0) { // 有队伍可以击败 j ok = false; break; } } if (ok) { return j; } } } }
golang 解法, 执行用时: 48 ms, 内存消耗: 6.8 MB, 提交时间: 2023-11-06 16:20:40
func findChampion(grid [][]int) int { next: for j := range grid[0] { for i, row := range grid { if i != j && row[j] > 0 { // 有队伍可以击败 j continue next } } return j } panic(-1) }
python3 解法, 执行用时: 52 ms, 内存消耗: 16.7 MB, 提交时间: 2023-11-06 16:19:52
class Solution: def findChampion(self, grid: List[List[int]]) -> int: for j, col in enumerate(zip(*grid)): # 按列来遍历 if 1 not in col[:j] + col[j + 1:]: # 没有队伍可以击败 j return j
python3 解法, 执行用时: 52 ms, 内存消耗: 16.7 MB, 提交时间: 2023-11-06 16:17:26
class Solution: def findChampion(self, grid: List[List[int]]) -> int: # 也就是找到第i行,该行除了grid[i][i], 都=1 n = len(grid) for i in range(n): if sum(grid[i]) == n - 1: return i return 0