g2201_2300.s2293_min_max_game.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g2201_2300.s2293_min_max_game;
// #Easy #Array #Simulation #2022_06_14_Time_1_ms_(90.39%)_Space_44_MB_(50.37%)
/**
* 2293 - Min Max Game\.
*
* Easy
*
* 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._
*
* **Example 1:**
*
* ![](https://assets.leetcode.com/uploads/2022/04/13/example1drawio-1.png)
*
* **Input:** nums = [1,3,5,2,4,8,2,2]
*
* **Output:** 1
*
* **Explanation:** The following arrays are the results of applying the algorithm repeatedly.
*
* First: nums = [1,5,4,2]
*
* Second: nums = [1,4]
*
* Third: nums = [1]
*
* 1 is the last remaining number, so we return 1.
*
* **Example 2:**
*
* **Input:** nums = [3]
*
* **Output:** 3
*
* **Explanation:** 3 is already the last remaining number, so we return 3.
*
* **Constraints:**
*
* * `1 <= nums.length <= 1024`
* * 1 <= nums[i] <= 109
* * `nums.length` is a power of `2`.
**/
public class Solution {
public int minMaxGame(int[] nums) {
int n = nums.length;
if (n == 1) {
return nums[0];
}
int[] newNums = new int[n / 2];
for (int i = 0; i < n / 2; i++) {
if (i % 2 == 0) {
newNums[i] = Math.min(nums[2 * i], nums[2 * i + 1]);
} else {
newNums[i] = Math.max(nums[2 * i], nums[2 * i + 1]);
}
}
return minMaxGame(newNums);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy