C++ | Leetcode C++题解之第162题寻找峰值

题目:

题解:

cpp 复制代码
class Solution {
public:
    int findPeakElement(vector<int>& nums) {
        int n = nums.size();

        // 辅助函数,输入下标 i,返回一个二元组 (0/1, nums[i])
        // 方便处理 nums[-1] 以及 nums[n] 的边界情况
        auto get = [&](int i) -> pair<int, int> {
            if (i == -1 || i == n) {
                return {0, 0};
            }
            return {1, nums[i]};
        };

        int left = 0, right = n - 1, ans = -1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (get(mid - 1) < get(mid) && get(mid) > get(mid + 1)) {
                ans = mid;
                break;
            }
            if (get(mid) < get(mid + 1)) {
                left = mid + 1;
            }
            else {
                right = mid - 1;
            }
        }
        return ans;
    }
};
相关推荐
Ricky_Theseus8 分钟前
C++静态库
开发语言·c++
_深海凉_8 分钟前
LeetCode热题100- 字母异位词分组
leetcode
洛水水10 分钟前
【力扣100题】14.两数相加
c++·算法·leetcode
AlanW11 分钟前
# Vcpkg使用总结2
c++
float_com13 分钟前
LeetCode80. 删除有序数组中的重复项 II
leetcode
pwn蒸鱼14 分钟前
leetcode:21. 合并两个有序链表
算法·leetcode·链表
洛水水16 分钟前
【力扣100题】15.删除链表的倒数第 N 个结点
算法·leetcode·链表
paeamecium24 分钟前
【PAT甲级真题】- Insert or Merge (25)
数据结构·c++·算法·排序算法·pat考试·pat
wfbcg31 分钟前
每日算法练习:LeetCode 3. 无重复字符的最长子串 ✅
算法·leetcode·职场和发展
_日拱一卒35 分钟前
LeetCode:矩阵置零
java·数据结构·线性代数·算法·leetcode·职场和发展·矩阵