Java | Leetcode Java题解之第162题寻找峰值

题目:

题解:

java 复制代码
class Solution {
    public int findPeakElement(int[] nums) {
        int n = nums.length;
        int left = 0, right = n - 1, ans = -1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (compare(nums, mid - 1, mid) < 0 && compare(nums, mid, mid + 1) > 0) {
                ans = mid;
                break;
            }
            if (compare(nums, mid, mid + 1) < 0) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return ans;
    }

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

    public int compare(int[] nums, int idx1, int idx2) {
        int[] num1 = get(nums, idx1);
        int[] num2 = get(nums, idx2);
        if (num1[0] != num2[0]) {
            return num1[0] > num2[0] ? 1 : -1;
        }
        if (num1[1] == num2[1]) {
            return 0;
        }
        return num1[1] > num2[1] ? 1 : -1;
    }
}
相关推荐
Ashore11_1 分钟前
用户中心项目—需求分析
java
johnrui8 分钟前
springboot接口限流操作
java·spring boot·后端
Flittly18 分钟前
【SpringAIAlibaba新手村系列】(9)Text to Image 文本生成图像技术
java·spring boot·agent
Flittly19 分钟前
【SpringAIAlibaba新手村系列】(10)Text to Voice 文本转语音技术
java·spring boot·agent
诸葛大钢铁22 分钟前
Java实现Excel文件合并
java·windows·excel
黎明丶之前26 分钟前
Spring Cloud Gateway 升级与 Bucket4j 限流实践
java·spring cloud
程序员木圭31 分钟前
05-告别逻辑混乱!Java 流程控制让代码学会"判断和循环"
java·后端
yaaakaaang35 分钟前
三、抽象工厂模式
java·抽象工厂模式
kongba00735 分钟前
复刻 Claude Code 项目御马术缰绳系统 harness engineering 落地蓝图
java·linux·服务器
tERS ERTS37 分钟前
Spring Cloud gateway 路由规则
java