天天看點

6090. 極大極小遊戲

class Solution {
public:
    int minMaxGame(vector<int>& nums) {
      
      int i = 0;
      int len = nums.size();
      
      while(len != 1){
        // i可到達的位置
        int availableLen = len >> 1;

        while(i < availableLen){
          
          int ind = (i << 1);
          
          if(1 == (i & 0x01)){
            // 奇數
            nums[i] = max(nums[ind], nums[ind + 1]);
          }else{
            // 偶數
            nums[i] = min(nums[ind], nums[ind + 1]);
          }
          
          i++;
        }
        
        // 開始下一次通路
        i = 0;

        // 對半
        len >>= 1;
      }
      
      return nums[0];
    }
};