---
# System prepended metadata

title: ' 2293. Min Max Game'
tags: [Leetcode]

---


# 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 array newNums of length n / 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]).
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]).
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.

![](https://hackmd.io/_uploads/SyNeWZ5L2.png)


題感有點長，大意是將一個陣列在迭代時長度減半，新陣列的奇數(odd)，是舊陣列的`
max(nums[2 * i], nums[2 * i + 1])`，偶數(even)則是舊陣列的`min(nums[2 * i], nums[2 * i + 1])`，使用遞迴求解

```
var minMaxGame = function(nums) {
    function lastRemaining(n){
        if(n.length===1){
            return n[0];
        }
        const newArray=[];

        for(let i=0;i<n.length/2;++i){
            if(i%2===0){
                newArray.push(Math.min(n[2 * i], n[2 * i + 1]));
            }else{
                newArray.push(Math.max(n[2 * i], n[2 * i + 1]));
            }
        }
        return lastRemaining(newArray);
    }
    return lastRemaining(nums);
};
```
