天天看點

數組簡單 LeetCode6090. 極大極小遊戲

6090. 極大極小遊戲

描述

給你一個下标從 0 開始的整數數組 nums ,其長度是 2 的幂。

對 nums 執行下述算法:

設 n 等于 nums 的長度,如果 n == 1 ,終止 算法過程。否則,建立 一個新的整數數組 newNums ,新數組長度為 n / 2 ,下标從 0 開始。

對于滿足 0 <= i < n / 2 的每個 偶數 下标 i ,将 newNums[i] 指派 為 min(nums[2 * i], nums[2 * i + 1]) 。

對于滿足 0 <= i < n / 2 的每個 奇數 下标 i ,将 newNums[i] 指派 為 max(nums[2 * i], nums[2 * i + 1]) 。

用 newNums 替換 nums 。

從步驟 1 開始 重複 整個過程。

執行算法後,傳回 nums 中剩下的那個數字。

class Solution {
    public int minMaxGame(int[] nums) {
        int n = nums.length;
        while (n != 1) {
            n /= 2;
            for (int i = 0; i < n; i++) {
                if (i % 2 == 0) {
                    nums[i] = Math.min(nums[i*2],nums[i*2+1]);
                } else {
                    nums[i] = Math.max(nums[i*2],nums[i*2+1]);
                }
            }
        }
        return nums[0];
    }
}