[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
:
Let n be the length of nums. If
n == 1
, end the process. Otherwise, create a new 0-indexed integer arraynewNums
of lengthn / 2
.For every even index
i
where0 <= i < n / 2
, assign the value ofnewNums[i]
asmin(nums[2 * i], nums[2 * i + 1])
.For every odd index i where
0 <= i < n / 2
, assign the value ofnewNums[i]
asmax(nums[2 * i], nums[2 * i + 1])
.Replace the array nums with newNums.
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,这样也不用担心处理奇数的问题。
大致思路就是和图片上展示的一样:
- 先找到同层的 min/max 数,并且加入新的数组中
- 替换原本的数组
- 重复步骤一直到数组的长度只有 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的主要内容,如果未能解决你的问题,请参考以下文章