给你一个下标从 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 n_f(int n,int m){
int i=0;
for(;;i++){
if(pow(n,i)==m)break;
}
return i;
}
int minMaxGame(vector<int>& nums) {
int n=nums.size();
if(n==1)return nums[0];
int j=n_f(2,n);
while(j>=1){
for(int i=0;2*i<pow(2,j);i++){
if(i%2==0){
nums[i]=min(nums[2*i],nums[2*i+1]);
}else{
nums[i]=max(nums[2*i],nums[2*i+1]);
}
}
j--;
}
return nums[0];
}
};
标签:newNums,下标,暴力,nums,2293,力扣,int,算法,数组 From: https://blog.51cto.com/u_15974747/8314112