列表

详情


2923. 找到冠军 I

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

给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 <= i, j <= n - 1i != 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 队是冠军。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int findChampion(vector<vector<int>>& grid) { } };

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

上一题