leetcode3175. 找到连续赢 K 场比赛的第一位玩家
最开始思路
看到题目的示例,只要比较数组的前2位,就好了,但是要一直变化这个数组的值的位置
被题目的示例误导了
没有细品题意,折腾半天,原来就是不断更新最大值,及重新计数
java">public int findWinningPlayer(int[] skills, int k) {int maxI = 0;int win = 0;int len = skills.length;for (int i = 1; i < len && win < k; i++) {// 打擂台,发现新的最大值,且清零获胜回合if (skills[i] > skills[maxI]) {maxI = i;win = 0;}// 获胜回合 +1win++;}// 如果 k 很大,那么 maxI 就是 skills 最大值的下标,毕竟最大值会一直赢下去return maxI;}
错误
python">from typing import Listdef findWinningPlayer(self, skills: List[int], k: int) -> int:maxInt = 0win = 0len = len(skills)for i in range(1, len):if skills[i] > skills[maxInt]:maxInt = iwin = 0win += 1else:win += 1if win >= k:return maxIntreturn 0
正确
python">def findWinningPlayer(self, skills: List[int], k: int) -> int:max_i = win = 0for i in range(1, len(skills)):# 打擂台,发现新的最大值if skills[i] > skills[max_i]: max_i = iwin = 0# 获胜回合 +1win += 1# 连续赢下 k 场比赛if win == k: break# 如果 k 很大,那么 max_i 就是 skills 最大值的下标,毕竟最大值会一直赢下去return max_i
总结
“leetcode3175. 找到连续赢 K 场比赛的第一位玩家”错就错在,我加1个else,
再深入一点认识,就是没看到“第一位连续”
再深入一些,自己的警觉性不够,对细节的把控,还要加强,及识别出关键信息的能力要加强
同时,做任何事情,磨刀不误砍柴工,都要确保大方向正确的前提下,再去操刀做事,粗中有细,才能无往不利!