[JavaScript 刷题] 数组 - 极大极小游戏,leetcode 2293

Posted GoldenaArcher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaScript 刷题] 数组 - 极大极小游戏,leetcode 2293相关的知识,希望对你有一定的参考价值。

[javascript 刷题] 数组 - 极大极小游戏,leetcode 2293

github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。

题目地址:2293. Min Max Game

题目

如下:

You are given a 0-indexed integer array nums whose length is a power of 2.

Apply the following algorithm on nums:

  1. Let n be the length of nums. If n == 1, end the process. Otherwise, create a new 0-indexed integer array newNums of length n / 2.

  2. For every even index i where 0 <= i < n / 2, assign the value of newNums[i] as min(nums[2 * i], nums[2 * i + 1]).

  3. For every odd index i where 0 <= i < n / 2, assign the value of newNums[i] as max(nums[2 * i], nums[2 * i + 1]).

  4. Replace the array nums with newNums.

  5. Repeat the entire process starting from step 1.

Return the last number that remains in nums after applying the algorithm.

解题思路

周赛的第一题都不会特别难,这道题也是,而且题目中也有了一些限制,例如说数组的长度永远是 2 n 2^n 2n,这样也不用担心处理奇数的问题。

大致思路就是和图片上展示的一样:

  1. 先找到同层的 min/max 数,并且加入新的数组中
  2. 替换原本的数组
  3. 重复步骤一直到数组的长度只有 1

使用 JavaScript 解题

/**
 * @param number[] nums
 * @return number
 */
var minMaxGame = function (nums) 
  while (nums.length > 1) 
    let isMin = true;
    const newArr = [];
    const size = nums.length;
    for (let i = 0; i < size; i += 2) 
      if (isMin) 
        newArr.push(Math.min(nums[i], nums[i + 1]));
       else 
        newArr.push(Math.max(nums[i], nums[i + 1]));
      

      isMin = !isMin;
    
    nums = newArr;
  
;

以上是关于[JavaScript 刷题] 数组 - 极大极小游戏,leetcode 2293的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 2293. 极大极小游戏

LeetCode 2293. 极大极小游戏

LeetCode 2293. 极大极小游戏

LeetCode刷题计划

LeetCode刷题计划

LeetCode刷题计划