本文主要是介绍LeetCode 2923. 找到冠军 I——更好的解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上一篇博客:LeetCode 2923. 找到冠军 I——每日一题
写在前面:大家好!我是
晴空๓
。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭!
用知识改变命运,用知识成就未来!加油 (ง •̀o•́)ง (ง •̀o•́)ง
原题链接:LeetCode 2923. 找到冠军 I
文章目录
- 更优的解法
- 解题代码
更优的解法
今天看了一下昨天每日一题的题解,发现了更好的解法只需要 O ( n ) {O(n)} O(n) 的时间复杂度就可以解出,而不是像我上一篇博客一样需要 O ( n 2 ) {O(n^2)} O(n2) 的时间复杂度才可以解决。
具体的思路是这样的,这个本质上就是 打擂台,如果当前的队伍输了那么该队伍就不可能是冠军,所以我们只需要一开始假设 0队 是冠军,然后与 1队 进行 PK。如果 grid[1][0] == 1 说明1队获胜,那么0队就不可能是冠军。再用1队与2队进行PK,赢了就继续与3队PK,输了说明也不是冠军,再用2队与后面的队伍PK,直到与所有的队伍PK完就可以得出冠军队伍。简而言之就是 冠军不能输!
。
解题代码
class Solution {public int findChampion(int[][] grid) {int n = grid.length;int champion = 0;for (int i = 1; i < n; i++) {if (grid[i][champion] == 1) {champion = i;}}return champion;}
}
题解参考
- LeetCode @oamuuvyi
这篇关于LeetCode 2923. 找到冠军 I——更好的解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!