首页 > 其他分享 >[LeetCode] 1535. Find the Winner of an Array Game

[LeetCode] 1535. Find the Winner of an Array Game

时间:2023-11-05 13:55:34浏览次数:30  
标签:arr int max Winner game Game integer prev Find

Given an integer array arr of distinct integers and an integer k.

A game will be played between the first two elements of the array (i.e. arr[0] and arr[1]). In each round of the game, we compare arr[0] with arr[1], the larger integer wins and remains at position 0, and the smaller integer moves to the end of the array. The game ends when an integer wins k consecutive rounds.

Return the integer which will win the game.

It is guaranteed that there will be a winner of the game.

Example 1:
Input: arr = [2,1,3,5,4,6,7], k = 2
Output: 5
Explanation: Let's see the rounds of the game:
Round | arr | winner | win_count
1 | [2,1,3,5,4,6,7] | 2 | 1
2 | [2,3,5,4,6,7,1] | 3 | 1
3 | [3,5,4,6,7,1,2] | 5 | 1
4 | [5,4,6,7,1,2,3] | 5 | 2
So we can see that 4 rounds will be played and 5 is the winner because it wins 2 consecutive games.

Example 2:
Input: arr = [3,2,1], k = 10
Output: 3
Explanation: 3 will win the first 10 rounds consecutively.

Constraints:
2 <= arr.length <= 105
1 <= arr[i] <= 106
arr contains distinct integers.
1 <= k <= 109

按符号重排数组。

给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。
每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。
返回赢得比赛的整数。
题目数据 保证 游戏存在赢家。

思路是模拟。这里有两个 corner case 需要处理,如果 input 数组只有两个数字,那么赢家就是这两个值中间较大的那一个。另一个 case 是如果遍历一次之后,整个数组中未出现赢得 k 次游戏的数字,那么全局最大的数字是赢家,因为这个数字有可能排在 input 数组很后面的位置导致 index 比他大的数字的个数不足 k 个。

一般的情况是,我们比较了头两个元素之后,从第三个元素开始,就只和第一个元素(赢家)比较并记录连续赢得比赛的回合数,如果有任何一个数字连续赢得比赛的回合数 == k 则返回这个数字。

时间O(n)
空间O(n)
Java实现

class Solution {
    public int getWinner(int[] arr, int k) {
        int prev = Math.max(arr[0], arr[1]);
        int count = 1;
        int max = prev;
        // corner case
        if (k == 1) {
            return prev;
        }

        // normal case
        for (int i = 2; i < arr.length; i++) {
            int cur = arr[i];
            if (prev > cur) {
                count++;
            } else {
                prev = cur;
                count = 1;
            }
            if (count == k) {
                return prev;
            }
            max = Math.max(max, arr[i]);
        }
        return max;
    }
}

标签:arr,int,max,Winner,game,Game,integer,prev,Find
From: https://www.cnblogs.com/cnoodle/p/17810446.html

相关文章

  • Could not find codec parameters for stream 0 (Video: h264, none)
    Couldnotfindcodecparametersforstream0(Video:h264,none)在使用视频处理工具或者播放器时,有时我们可能会遇到错误信息"Couldnotfindcodecparametersforstream0(Video:h264,none)"。这个错误提示说明在当前的环境中找不到视频流的编解码器参数,导致无法正确解......
  • hackergame2023wp
    Hackergame启动Hackergame启动!发现校验相似度是在前端校验的,然后通过url传参相似度,传递个100过去就拿到flag了更深更暗在main.js里有一段生成flag的代码,在控制台中调用就好了asyncfunctiongetFlag(token){//Generatetheflagbasedonuser'stoken......
  • UE4中的GamePlay模块
    链接该文档主要通过学习自己构建文件,形成GamePlay模块。下图是利用引擎创建的一个空模板C++代码结构简要流程UBT虚幻编译工具(UBT:UnrealBuildTool)是一个自定义工具,负责管理通过各种编译配置来编译虚幻引擎4(UE4)源代码的过程。该工具处理所有复杂的项目编译工作,编译UE4的......
  • 基于Python+Pygame实现一个滑雪小游戏
    目录项目介绍Pygame介绍项目文件夹介绍演示视频代码免费领取一、项目介绍使用介绍:运行main.py文件后,通过左右按键可以控制小人的移动,如果经过旗杆那么+10分,如果碰到树木那么减50分。二、Pygame介绍Pygame是一个用于游戏开发和多媒体应用的Python库。它是基于SDL(Simple......
  • 2D物理引擎 Box2D for javascript Games 第七章 子弹和感应器
    2D物理引擎Box2DforjavascriptGames第七章子弹和感应器你知道Box2D可以在每一个时间步中管理刚体间的碰撞并决算它们。总之,在愤怒的小鸟中制作攻城机器期间,发生了一些错误你可能需要注意一下,有时抛射物会穿过城堡,忽略了碰撞。这里发生了什么?通常,Javascript游戏运行......
  • [ARC122D] XOR Game
    ProblemStatementThereare$2N$integerswrittenonablackboard.The$i$-thintegeris$A_i$.AliceandBobwillplayagameconsistingof$N$rounds.Ineachround,theydothefollowing:First,Alicechoosesanintegerontheblackboardanderasesit.......
  • shell find scp 命令
    一、背景有时我们需要把find找到的文件,scp到远程机器上。下面分享一下几个常见用法 二、解决方案2.1方案一查询某个文件下文件大小大于10k的文件:find/home/user/dir-size+10k查找大于4的文件,全部复制到另一目录:find/home/user/dir/-size+4k-execcp{}......
  • 2023PKU GeekGame Web wp
    2023PKUGeekGameWebwp第三新XSS巡猎查看源码我们可以知道可以在body的部分插入代码触发xss漏洞,根据题目给出的提示可以知道需要创建一个元素指向/admin/路径,然后通过document读取目标的cookies。<iframesrc="/admin/"id="barframe"></iframe><script>setTimeout(()=>......
  • Fail to find the dnn implementation node CudnnRNN
    tensorflow.python.framework.errors_impl.UnknownError:   Failtofindthednnimplementation.   [[{{nodeCudnnRNN}}]]   [[model/lstm/PartitionedCall]][Op:__inference_train_function_3343]Functioncallstack:train_function->train_function->tr......
  • Allwinner SoC based boards
    AllwinnerSoCbasedboardsForboardsusinganAllwinnerARMbasedSoC("sunxi"),theU-Bootbuildsystemgeneratesasingleintegratedimagefile: u-boot-sunxi-with-spl.bin. ThisfilecanbeusedonSDcards,eMMCdevices,SPIflashandforthe......