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;
    }
};
相关推荐
智者知已应修善业9 分钟前
【C++非递归剪枝问题凑钱方案数】2024-7-18
c语言·c++·经验分享·笔记·算法·剪枝
BigLeo9 分钟前
c++中,声明(Declaration)与定义(Definition)有什么不同?
c++
Yolo_TvT11 分钟前
C++:缺省参数
开发语言·c++·算法
承渊政道14 分钟前
【优选算法】(实战领略前缀和的真谛)
开发语言·数据结构·c++·笔记·学习·算法
xiaoliuliu1234517 分钟前
Dev C++ 5.11开发编辑器 安装教程:详细步骤+自定义安装路径(附简体中文设置)
开发语言·c++
lcj251131 分钟前
蓝桥杯C++:算法1:高精度
c++·算法·蓝桥杯
liulilittle37 分钟前
SQLite3 C++ usage demo
数据库·c++·sqlite
leaves falling1 小时前
C++类和对象(3)(初始化列表,类型转换,static成员,友元)
java·开发语言·c++
宵时待雨1 小时前
C++笔记归纳15:封装map & set
开发语言·数据结构·c++·笔记·算法
眼眸流转1 小时前
LeetCode热题100(七)
算法·leetcode·c#