
Input: nums =[1,3,5,2,4,8,2,2]Output: 1Explanation: The following arrays are the results of applying the algorithm repeatedly.First: nums =[1,5,4,2]Second: nums =[1,4]Third: nums =[1]1is the last remaining number, so we return1.
The process repeatedly reduces the array by applying min or max to pairs of elements, alternating between min for even indices and max for odd indices. This continues until only one element remains.
classSolution {
public:int minMaxGame(vector<int>& nums) {
while (nums.size() >1) {
vector<int> newNums(nums.size() /2);
for (int i =0; i < newNums.size(); ++i) {
if (i %2==0) newNums[i] = min(nums[2*i], nums[2*i+1]);
else newNums[i] = max(nums[2*i], nums[2*i+1]);
}
nums = newNums;
}
return nums[0];
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
funcminMaxGame(nums []int) int {
for len(nums) > 1 {
n:= len(nums) /2newNums:= make([]int, n)
fori:=0; i < n; i++ {
ifi%2==0 {
newNums[i] = min(nums[2*i], nums[2*i+1])
} else {
newNums[i] = max(nums[2*i], nums[2*i+1])
}
}
nums = newNums }
returnnums[0]
}
func min(a, bint) int { ifa < b { returna } else { returnb } }
func max(a, bint) int { ifa > b { returna } else { returnb } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
classSolution {
publicintminMaxGame(int[] nums) {
while (nums.length> 1) {
int n = nums.length/ 2;
int[] newNums =newint[n];
for (int i = 0; i < n; 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]);
}
nums = newNums;
}
return nums[0];
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
classSolution {
funminMaxGame(nums: IntArray): Int {
var arr = nums
while (arr.size > 1) {
val n = arr.size / 2val newArr = IntArray(n)
for (i in0 until n) {
newArr[i] = if (i % 2==0) minOf(arr[2*i], arr[2*i+1]) else maxOf(arr[2*i], arr[2*i+1])
}
arr = newArr
}
return arr[0]
}
}
1
2
3
4
5
6
7
8
9
10
defmin_max_game(nums: list[int]) -> int:
while len(nums) >1:
new_nums = []
for i in range(len(nums) //2):
if i %2==0:
new_nums.append(min(nums[2*i], nums[2*i+1]))
else:
new_nums.append(max(nums[2*i], nums[2*i+1]))
nums = new_nums
return nums[0]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
impl Solution {
pubfnmin_max_game(mut nums: Vec<i32>) -> i32 {
while nums.len() >1 {
let n = nums.len() /2;
letmut new_nums =vec![0; n];
for i in0..n {
new_nums[i] =if i %2==0 {
nums[2*i].min(nums[2*i+1])
} else {
nums[2*i].max(nums[2*i+1])
};
}
nums = new_nums;
}
nums[0]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
classSolution {
minMaxGame(nums: number[]):number {
while (nums.length>1) {
constn=nums.length/2;
constnewNums: number[] = [];
for (leti=0; i<n; ++i) {
if (i%2===0) newNums.push(Math.min(nums[2*i], nums[2*i+1]));
elsenewNums.push(Math.max(nums[2*i], nums[2*i+1]));
}
nums=newNums;
}
returnnums[0];
}
}