zoukankan      html  css  js  c++  java
  • 刷题-力扣-1535. 找出数组游戏的赢家

    1535. 找出数组游戏的赢家

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/find-the-winner-of-an-array-game/
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目描述

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

    示例 1:

    输入:arr = [2,1,3,5,4,6,7], k = 2
    输出:5
    解释:一起看一下本场游戏每回合的情况:
    

    因此将进行 4 回合比赛,其中 5 是赢家,因为它连胜 2 回合。
    

    示例 2:

    输入:arr = [3,2,1], k = 10
    输出:3
    解释:3 将会在前 10 个回合中连续获胜。
    

    示例 3:

    输入:arr = [1,9,8,2,3,7,6,4,5], k = 7
    输出:9
    

    示例 4:

    输入:arr = [1,11,22,33,44,55,66,77,88,99], k = 1000000000
    输出:99
    

    提示:

    • 2 <= arr.length <= 10^5
    • 1 <= arr[i] <= 10^6
    • arr 所含的整数 各不相同 。
    • 1 <= k <= 10^9

    题目分析

    1. 根据题目描述选择一个连续大k轮的数
    2. 比较次数k不大于arr的长度,当k大于arr的长度后,arr.size()轮之后的比较都是重复的
    3. 设置一个始终指向较大的数的指针maxIndex
    4. 当maxIndex指向的数连续获胜k次后,maxIndex指向的数即为所求

    代码

    
    class Solution {
    public:
        int getWinner(vector<int>& arr, int k) {
            int t = k > arr.size() ? arr.size() : k;
            int maxIndex = 0;
            int flag = maxIndex + 1;
            while (t > 0 && flag != maxIndex) {
                if (flag >= arr.size()) flag = 0;
                if (arr[maxIndex] >= arr[flag]) t--;
                else {
                    maxIndex = flag;
                    t = k > arr.size() ? arr.size() : k - 1;
                }
                flag++;
            }
            return arr[maxIndex];
        }
    };
    
  • 相关阅读:
    ZOJ 2588 Burning Bridges
    POJ 1966 ZOJ 2182 Cable TV Network
    HDU 5348 MZL's endless loop
    HDU 5352 MZL's City
    Tarjan算法求解无向连通图的割点、割边、点双连通分量和边双连通分量的模板
    ZOJ 1119 SPF
    HDU 3452 Bonsai
    HDU 1520 Anniversary party
    POJ 2239 Selecting Courses
    POJ 1144 Network
  • 原文地址:https://www.cnblogs.com/HanYG/p/14512063.html
Copyright © 2011-2022 走看看