美文网首页
【教3妹学编程-算法题】2923. 找到冠军 I

【教3妹学编程-算法题】2923. 找到冠军 I

作者: 程序员小2 | 来源:发表于2023-11-10 22:02 被阅读0次
    愤怒

    3妹:2哥2哥,你看到新闻了吗?襄阳健桥医院院长 公然“贩卖出生证明”, 真是太胆大包天了吧。
    2哥 : 我也看到新闻了,7人被采取刑事强制措施。 就应该好好查查他们, 一查到底!
    3妹:真的是太可气了, 白衣天使,本应该治病救人,没想到竟然能干出这种事情。
    2哥 :哎,真相会迟到,但是不会缺席。 幸亏好很多像上官大人这样的打拐志愿者,帮助我们揭开面纱,还原事情的真相,他们是伟大的。
    3妹:我一直觉得医生是个伟大的职业,小时候的愿望还是当一名医生, 结果上大学没有报考上医学院, 误打误撞进了计算机。 没想到医院也有这么黑暗的角落。
    2哥:说到计算机,岔开个话题, 3妹,今天是不是还没刷题呢?我这里有个题很有意思。

    题目:

    一场比赛中共有 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 队强

    思路:

    思考

    根据题意,如果第 j 列的元素值都是 0,说明没有队伍可以击败它,返回 j。
    详见代码:

    java代码:

    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 (grid[i][j] != 0) { // 有队伍可以击败 j
                        ok = false;
                        break;
                    }
                }
                if (ok) {
                    return j;
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:【教3妹学编程-算法题】2923. 找到冠军 I

          本文链接:https://www.haomeiwen.com/subject/ffxkwdtx.html