首页 > 其他分享 >[LeetCode] LeetCode162. 寻找峰值

[LeetCode] LeetCode162. 寻找峰值

时间:2023-12-21 12:00:14浏览次数:31  
标签:right nums int LeetCode162 峰值 mid LeetCode

题目描述

思路:同LeetCode852.山脉数组的顶峰索引

注意:当nums数组只有一个元素的时候,这个元素就是顶元素
因为根据题目:nums[-1] = nums[n] = -∞

方法一:

class Solution {
    public int findPeakElement(int[] nums) {
        if (nums.length == 1) return 0;
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            if (left == right) return left;
            int mid = left + (right - left) / 2;
            if (nums[mid] < nums[mid + 1]) {
                left = mid + 1;
            } else if (nums[mid] > nums[mid + 1]) {
                right = mid;
            }
        }
        throw new RuntimeException("Error");
    }
}

标签:right,nums,int,LeetCode162,峰值,mid,LeetCode
From: https://www.cnblogs.com/keyongkang/p/17918678.html

相关文章

  • [LeetCode] 1362. Closest Divisors 最接近的因数
    Givenaninteger num,findtheclosesttwointegersinabsolutedifferencewhoseproductequals num+1 or num+2.Returnthetwointegersinanyorder.Example1:Input:num=8Output:[3,3]Explanation:Fornum+1=9,theclosestdivisorsare3&......
  • Leetcode—旋转矩阵
    48. 旋转图像给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转90度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[[7,......
  • Leetcode 71. 简化路径
    https://leetcode.cn/problems/simplify-path/description/给你一个字符串path,表示指向某一文件或目录的Unix风格绝对路径(以'/'开头),请你将其转化为更加简洁的规范路径。在Unix风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点(..)表示将目录切换到上一级(指向父目......
  • [LeetCode22-中等-DFS] 括号生成
    这道题考使用回溯(递归的一种)进行深度优先算法,题目是这样的数字n代表生产括号的对数,写一个算法,返回所有有效的括号组合比如 n=1代表生成1对括号,显然答案就是“()"n=2,代表生成2对括号, 答案就是"()()","(())"n=3代表生成3对括号,答案就是"((()))","()()()","(()())......
  • [LeetCode] LeetCode81. 搜索旋转排序数组II
    题目描述思路:是lc33.搜索旋转排序数组的延伸,允许包含重复元素起初:当nums[left]<=nums[mid]时,区间[left,mid]有序当nums[left]>nums[mid]时,区间[mid,right]有序但是这个题目当nums[left]==nums[mid]时,无法判断哪个区间是有序的,无法判断target位于左侧还是右侧,此时无......
  • [LeetCode Hot 100] LeetCode153. 寻找旋转排序数组中的最小值
    题目描述思路如果数组翻转后又回到升序的情况,即nums[left]<=nums[right],则nums[left]就是最小值,直接返回。如果数组翻转,需要找到数组中第二部分的第一个元素:若nums[left]<=nums[mid],说明区间[left,mid]连续递增,则最小元素一定不在这个区间里,可以直接排除,最小值在[......
  • Leetcode 044. 通配符匹配
    https://leetcode.cn/problems/wildcard-matching/description/给你一个输入字符串(s)和一个字符模式(p),请你实现一个支持'?'和'*'匹配规则的通配符匹配:'?'可以匹配任何单个字符。'*'可以匹配任意字符序列(包括空字符序列)。判定匹配成功的充要条件是:字符模式必须能够......
  • [LeetCode] LeetCode704. 二分查找
    题目描述思路基础二分查找模板的考察。方法一:classSolution{publicintsearch(int[]nums,inttarget){if(nums==null||nums.length==0)return-1;intleft=0,right=nums.length-1;while(left<=right){......
  • [LeetCode Hot 100] LeetCode33. 搜索旋转排序数组
    题目描述思路如果nums[left]<=nums[mid],则[left,mid]有序如果nums[left]>nums[mid],则[mid,right]有序方法一:classSolution{publicintsearch(int[]nums,inttarget){if(nums==null||nums.length==0)return-1;intleft=0,ri......
  • [LeetCode Hot 100] LeetCode35. 搜索插入位置
    题目描述思路基础二分搜索模板本质:找到第一个大于等于target的元素的下标注意:该题目不存在重复元素存在一种特殊情况:target>nums的最大值,此时插入的位置正好是left的位置方法一:classSolution{publicintsearchInsert(int[]nums,inttarget){if......