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;
    }
};
相关推荐
圣保罗的大教堂6 分钟前
leetcode 761. 特殊的二进制字符串 困难
leetcode
Trouvaille ~15 分钟前
【动态规划篇】专题(一):斐波那契模型——从数学递推到算法思维
c++·算法·leetcode·青少年编程·面试·动态规划·入门
样例过了就是过了36 分钟前
LeetCode热题100 回文链表
数据结构·算法·leetcode·链表
汉克老师37 分钟前
GESP2023年12月认证C++二级( 第二部分判断题(1-10))
c++·循环结构·分支结构·gesp二级·gesp2级
Solitary-walk1 小时前
前缀和思想
数据结构·c++·算法
消失的旧时光-19431 小时前
拷贝构造 vs 移动构造:从左值引用到右值引用彻底讲透(Student 示例)
c++·拷贝构造·移动构造
ouliten2 小时前
VSCode的C++插件clangd如何搭配cuda使用?
c++·ide·vscode
xiaoccii2 小时前
C++(入门版)
java·c++·算法
ADDDDDD_Trouvaille2 小时前
2026.2.23——OJ101-103题
c++·算法
刘琦沛在进步2 小时前
【数据结构】学习数据结构的第一课——顺序表(静态)
数据结构·c++·学习