zoukankan      html  css  js  c++  java
  • Leetcode162题寻找峰值

    题目

    峰值元素是指其值大于左右相邻值的元素。

    给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。

    数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。

    你可以假设 nums[-1] = nums[n] = -∞。

    示例
    输入: nums = [1,2,3,1]
    输出: 2
    解释: 3 是峰值元素,你的函数应该返回其索引 2

    题解

    本题采用二分查找法进行求解,进行nums[i] < nums[i+1] 判断,如果小于后一个数,那么峰值一定在i后面,否则在前面。这里等于没有特别判断,位于左右侧都可以。需要注意的是这里引用了nums[i+1],就需要对访问范围进行限制,防止越界,本题处理方法是right=nums.length - 1。

    class Solution {
        public int findPeakElement(int[] nums) {
            int left = 0;
            int right = nums.length - 1;
            while(left < right){
                int mid = left + (right - left) / 2;
                if(nums[mid] < nums[mid + 1]){
                    left = mid + 1;
                }
                else{
                    right = mid;
                }
            }
            return left;
        }
    }
  • 相关阅读:
    UniGUI 之UniDBGrid(05)
    Spring事务管理
    MySQL数据库隔离级别
    MySQL并发控制
    MySQL存储引擎
    数据库事务(2)---ACID与并发问题
    数据库事务(1)----- JDBC事务与JTA事务
    navicat Window . MAC版常用快捷键
    重要博客
    yunw
  • 原文地址:https://www.cnblogs.com/jianglinliu/p/11818127.html
Copyright © 2011-2022 走看看