class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return int整型
     */
    int findPeakElement(std::vector<int>& nums) {
        int left = 0, right = nums.size() - 1;
        while (left < right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] > nums[mid + 1]) {  // 思想:当一个数大于左边的值,那么它及它的左边会有一个最大值,相反则它的右边有个最大值
                right = mid;  // 因为这个赋值的是mid,而不是mid-1所以可能会出现left等于right情况,所以while条件里不能是等于号,而上一个折半查找是mid-1需要用left = right 是最后一个元素的情况,需要进行判断
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
};