美文网首页
LeetCode 第 162 题:寻找峰值

LeetCode 第 162 题:寻找峰值

作者: 放开那个BUG | 来源:发表于2021-07-25 19:46 被阅读0次

1、前言

题目描述

2、思路

我开始以为最快的解法是 O(n),结果我错了,最快的是 O(logn)。O(n) 的解法傻子都能解出来,直接一趟遍历就行,可以把峰值当作一个折线,拐弯处就是峰值,这样的代码会写的很精简。

但是二分法不是那么好想的,这里就不写了。

3、代码

线性时间:

class Solution {
    public int findPeakElement(int[] nums) {
        if(nums == null || nums.length == 0){
            return 0;
        }

        for(int i = 0; i < nums.length - 1; i++){
            if(nums[i] > nums[i + 1]){
                return i;
            }
        }

        return nums.length - 1;
    }
}

二分法:

class Solution {
    public int findPeakElement(int[] nums) {
        if(nums == null || nums.length == 0){
            return 0;
        }

        int left = 0, right = nums.length - 1;
        while(left < right){
            int mid = (right - left) / 2 + left;
            if(nums[mid] < nums[mid + 1]){
                left = mid + 1;
            }else{
                right = mid;
            }
        }

        return left;
    }
}

相关文章

  • LeetCode 第 162 题:寻找峰值

    1、前言 2、思路 我开始以为最快的解法是 O(n),结果我错了,最快的是 O(logn)。O(n) 的解法傻子都...

  • LeetCode 161-165

    162. 寻找峰值[https://leetcode-cn.com/problems/find-peak-elem...

  • leetcode-162. 寻找峰值

    题目: 162. 寻找峰值[https://leetcode-cn.com/problems/find-peak-...

  • Leetcode 162 寻找峰值

    162. 寻找峰值[https://leetcode-cn.com/problems/find-peak-elem...

  • Leetcode 162 寻找峰值

    Time: 2019-08-07难度:中等 题目描述 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 n...

  • [LeetCode][Python]162. 寻找峰值

    [LeetCode][Python]162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 ...

  • leetcode--162--寻找峰值

    题目:峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+...

  • LeetCode-162-寻找峰值

    寻找峰值 题目描述:峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数...

  • Leetcode_162_寻找峰值_hn

    题目描述 峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i...

  • 162. 寻找峰值

    【Description】峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i]...

网友评论

      本文标题:LeetCode 第 162 题:寻找峰值

      本文链接:https://www.haomeiwen.com/subject/sorxultx.html