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;
    }
};
相关推荐
风筝在晴天搁浅3 小时前
快手/字节 CodeTop LeetCode 415.字符串相加
算法·leetcode
小黄人软件3 小时前
C++读写编辑CSV文件示例源码 用于数据导入导出,比Excel好使
开发语言·c++·excel
郭涤生3 小时前
C++各个版本的性能和安全性总结
开发语言·c++
wljy15 小时前
二、静态库的制作和使用
linux·c语言·开发语言·c++
道剑剑非道5 小时前
FFmpeg 6.0 实战:用 C++ 封装摄像头采集与 RTSP 推流
开发语言·c++·ffmpeg
米粒15 小时前
力扣算法刷题 Day 64 Floyd算法 & A* 算法 & 总结篇
算法·leetcode·职场和发展
光电笑映5 小时前
从环境变量到进程虚拟地址空间——Linux 内存管理的底层脉络
linux·服务器·c++·c
sparEE6 小时前
c++字符串和自定义字面量
开发语言·c++
蜡笔小马7 小时前
03.C++设计模式-原型模式
c++·设计模式·原型模式
神仙别闹7 小时前
基于QT(C++)实现线性表的建立、插入、删除、查找等基本操作
java·c++·qt