前言
经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。后续开始专项练习。
描述
一场比赛中共有
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.从第一个队员开始,逐步寻找比自己厉害的即可。
代码实现
class Solution {
public int findChampion(int[][] grid) {
int row=grid.length;
int col=grid[0].length;
int res=-1;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(i!=j&&grid[i][j]==1){
if(res==j||res==-1){
res=i;
}
}
}
}
return res;
}
}