本文主要是介绍2924. 找到冠军 II --力扣 --JAVA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
一场比赛中共有
n
支队伍,按从0
到n - 1
编号。每支队伍也是 有向无环图(DAG) 上的一个节点。给你一个整数
n
和一个下标从 0 开始、长度为m
的二维整数数组edges
表示这个有向无环图,其中edges[i] = [ui, vi]
表示图中存在一条从ui
队到vi
队的有向边。从
a
队到b
队的有向边意味着a
队比b
队 强 ,也就是b
队比a
队 弱 。在这场比赛中,如果不存在某支强于
a
队的队伍,则认为a
队将会是 冠军 。如果这场比赛存在 唯一 一个冠军,则返回将会成为冠军的队伍。否则,返回
-1
。注意
- 环 是形如
a1, a2, ..., an, an+1
的一个序列,且满足:节点a1
与节点an+1
是同一个节点;节点a1, a2, ..., an
互不相同;对于范围[1, n]
中的每个i
,均存在一条从节点ai
到节点ai+1
的有向边。- 有向无环图 是不存在任何环的有向图。
解题思路
- 参赛队伍数量为n个,因此可以通过创建boolean数组来标识队伍是否为冠军;
- 遍历队列数组,将较弱的一对的标记为false;
- 遍历boolean数组记录为true(即没有队伍比他强)的数量,并记录下标;
- 因为最强队只有一个,所以当true数量为1的时候,返回结果下标,否则返回-1。
代码展示
class Solution {public int findChampion(int n, int[][] edges) {boolean[] boos = new boolean[n];Arrays.fill(boos, true);for(int[] nums : edges){boos[nums[1]] = false;}int count = 0;int res = 0;for(int i = 0; i < n; i ++){if(boos[i]){count++;res = i;}}if(count == 1){return res;}return -1;}
}
这篇关于2924. 找到冠军 II --力扣 --JAVA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!