看到题目的示例,只要比较数组的前2位,就好了,但是要一直变化这个数组的值的位置
被题目的示例误导了
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;
}
// 获胜回合 +1
win++;
}
// 如果 k 很大,那么 maxI 就是 skills 最大值的下标,毕竟最大值会一直赢下去
return maxI;
}
写python的时候,仿造java的思路,也遇到坑
from typing import List
def findWinningPlayer(self, skills: List[int], k: int) -> int:
maxInt = 0
win = 0
len = len(skills)
for i in range(1, len):
if skills[i] > skills[maxInt]:
maxInt = i
win = 0
win += 1
else:
win += 1
if win >= k:
return maxInt
return 0
def findWinningPlayer(self, skills: List[int], k: int) -> int:
max_i = win = 0
for i in range(1, len(skills)):
# 打擂台,发现新的最大值
if skills[i] > skills[max_i]:
max_i = i
win = 0
# 获胜回合 +1
win += 1
# 连续赢下 k 场比赛
if win == k:
break
# 如果 k 很大,那么 max_i 就是 skills 最大值的下标,毕竟最大值会一直赢下去
return max_i
“”错就错在,我加1个else,
再深入一点认识,就是没看到“第一位连续”
再深入一些,自己的警觉性不够,对细节的把控,还要加强,及识别出关键信息的能力要加强
同时,做任何事情,磨刀不误砍柴工,都要确保大方向正确的前提下,再去操刀做事,粗中有细,才能无往不利!