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;
    }
};
相关推荐
AbandonForce7 小时前
哈希表(HashTable,散列表)个人理解
开发语言·数据结构·c++·散列表
mask哥7 小时前
力扣算法java实现汇总整理(下)
java·算法·leetcode
样例过了就是过了8 小时前
LeetCode热题100 编辑距离
数据结构·c++·算法·leetcode·动态规划
z200509308 小时前
C++中位图和布隆过滤器的一些面试题
开发语言·c++
khalil10208 小时前
代码随想录算法训练营Day-46 动态规划13 | 647. 回文子串、516.最长回文子序列、动态规划总结
数据结构·c++·算法·leetcode·动态规划·回文子串·回文子序列
挨踢ren9 小时前
单例模式:C++实现与多线程安全
c++·设计模式
he___H9 小时前
算法快与慢--哈希+双指针
算法·leetcode·哈希算法
用户805533698039 小时前
现代Qt开发教程(新手篇)1.14——日志
c++·qt
艾莉丝努力练剑10 小时前
【Linux网络】Linux 网络编程入门:TCP Socket 编程(下)
linux·运维·服务器·网络·c++·tcp/ip
宵时待雨10 小时前
linux笔记归纳4:进程概念
linux·运维·服务器·c++·笔记