笨办法直接按照题意改变数组 时间复杂度极高
不改变数组:
i 记录当前胜利者的位置
j 记录当前的比较对象
def getWinner(self, arr, k):
# time记录当前这个数胜利的次数
time=0
length=len(arr)
if length<=k:
return (max(arr))
elif length==1:
return (arr[0])
# 普通情况
else:
i = 0
j = 1
while True:
# 如果当前数一直胜利 就一直往后比较
if arr[i]>arr[j]:
j=(j+1)%length
time+=1
# 如果当前数输了 就把它放在现在胜利的这个数前面
else:
tmp=arr[i]
arr.insert(j,tmp)
del arr[i]
i = j%length
j=(j+1)%length
time=1
if time==k:
return arr[i]