Python 3  ||  7 lines,   ||  T/S: 99% / 93%
Here\'s the intuition:\n- Losing is a transitive relation-- if player a loses to b, and b loses to c, then a would lose to c should they play. \n- Thus, any pla
Here\'s the intuition:\n- Losing is a transitive relation-- if player *a* loses to *b*, and *b* loses to *c*, then *a* would lose to *c* should they play. \n- Thus, any player moved to the end of the list for losing will never win again against any subsequent champ. There\'s really no reason to append any losers to the end of the list; we simply ignore them.\n\n- This realization implies then the game is more simply stated as: *The champ will be the first player who wins over the current champ and the *k* - 1 players that directly follow, or lacking that, the player who is current champ after the list is exhausted*.\n\n```\nclass Solution:\n    def getWinner(self, arr: list[int], k: int) -> int:\n        \n        champion, tally = arr.pop(0), 0\n\n        for player in arr:\n            \n            if player > champion: \n                champion, tally = player, 0\n                \n            tally+= 1\n            \n            if tally == k: return champion\n\n        return champion\n```\n[https://leetcode.com/problems/find-the-winner-of-an-array-game/submissions/1277976518/](https://leetcode.com/problems/find-the-winner-of-an-array-game/submissions/1277976518/)\n\nI could be wrong, but I think that time complexity is *O*(*N*) and space complexity is *O*(1), in which *N* ~ `len(arr)`.
['Python', 'Python3']