首页 > 其他分享 >【LeeCode】162. 寻找峰值

【LeeCode】162. 寻找峰值

时间:2023-04-06 23:34:51浏览次数:48  
标签:nums int findPeakElement Solution 峰值 LeeCode new public 162

【题目描述】

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

给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。

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

你必须实现时间复杂度为 O(log n) 的算法来解决此问题。

https://leetcode.cn/problems/find-peak-element/


【示例】

【LeeCode】162. 寻找峰值_i++

【代码】LeeCode-二分法

在题目描述中出现了 nums[-1] = nums[n] = -∞,这就代表着 只要数组中存在一个元素比相邻元素大,那么沿着它一定可以找到一个峰值

import java.util.*;
// 2023-4-6

class Solution {
    public int findPeakElement(int[] nums) {
         int len = nums.length;
         int left = 0;
         int right = len - 1;
         while (left < right){
             int mid = left + (right - left) / 2;
             if (nums[mid] > nums[mid + 1]){
                 right = mid;
             }else {
                 left = mid + 1;
             }
         }
         return left;
    }
}
public class Main {
    public static void main(String[] args) {
        new Solution().findPeakElement(new int[]{1,2,3,1}); // 输出:2
        new Solution().findPeakElement(new int[]{1,2,1,3,5,6,4}); // 输出:1 或者 5
    }
}

【代码】寻找最大值

import java.util.*;
// 2023-4-6

class Solution {
    public int findPeakElement(int[] nums) {
         int len = nums.length;
         int idx = 0;
        for (int i = 1; i < len; i++) {
            if (nums[i] > nums[idx]){
                idx = i;
            }
        }
        return idx;
    }
}
public class Main {
    public static void main(String[] args) {
        new Solution().findPeakElement(new int[]{1,2,3,1}); // 输出:2
        new Solution().findPeakElement(new int[]{1,2,1,3,5,6,4}); // 输出:1 或者 5
    }
}

【代码】admin

48 / 65 个通过的测试用例

import java.util.*;
// 2023-4-6

class Solution {
    public int findPeakElement(int[] nums) {
         int len = nums.length;
         if (len < 2) return 0;
         for (int i = 1; i < len - 1; i++){
             if (nums[i] > nums[i - 1] && nums[i] > nums[i + 1]){
                 return i;
             }

         }
         return -1;
    }
}
public class Main {
    public static void main(String[] args) {
        new Solution().findPeakElement(new int[]{1,2,3,1}); // 输出:2
        new Solution().findPeakElement(new int[]{1,2,1,3,5,6,4}); // 输出:1 或者 5
    }
}

标签:nums,int,findPeakElement,Solution,峰值,LeeCode,new,public,162
From: https://blog.51cto.com/u_13682316/6174246

相关文章

  • 【LeeCode】441. 排列硬币
    【题目描述】你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。https://leetcode.cn/problems/arranging-coins/【示例......
  • 【LeeCode】2427. 公因子的数目
    【题目描述】给你两个正整数 a 和 b ,返回 a 和 b 的 公 因子的数目。如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的一个 公因子 。 https://leetcode.cn/problems/number-of-common-factors/【示例】【代码】adminpackagecom.company;//2023-04-0......
  • Spark视频王家林第119课: Spark Streaming性能优化:如何在生产环境下应对流数据峰值巨变
    Spark视频王家林第119课:SparkStreaming性能优化:如何在生产环境下应对流数据峰值巨变?本节讲解SparkStreaming性能优化:如何在生产环境下应对流数据峰值巨变?数据峰值及流量变化的不稳定有2个层面:1)第一个层面就是数据确实不稳定,例如晚上11点的时候访问流量特别高,相对其他时间而言表......
  • 基于matlab的高精度信号峰值检测算法
    1.算法描述       峰值检验是示波表中数据采集方式之一,这种技术起源于存储深度不能满足捕获毛刺的需要。如果用模拟示波器去观察,只有当毛刺信号是重复性的并且和主信号同步时,才能看到毛刺信号。由于毛刺源于其他电路系统,所以这些毛刺只是偶尔发生,并且和主信号......
  • NIOS控制LCD16207 IP核
    NIOS控制LCD16207IP核在Quartus中集成了一个qsys工具,用于搭建sopc系统。qsys中提供了一个LCD16207的ip核,该ip核可以驱动LCD1602,在bsp设置中选择lcd16207为标准输出,即可通过printf()函数将字符输出到LCD上。查阅官方手册《EmbeddedPeripheralsIPUserGuide》,手册中说道:TheL......
  • python基础:split、join、replace、remove、del、pop、index小记python 字符串的split(
    这里总结了平时写脚本时经常用到的一些基础方法,做个记录1、split()函数可以基于分隔符将字符串分割成由若干子串组成的列表str.split(str="",num=string.count(str))str......
  • Python psutil包 获取实时内存大小、内存峰值、CPU利用率
    psutil.Process.mem_infopsutil.Process.mem_info函数返回值是一个nametuple对象,其中各字段的内容含义是:参数名称含义rssResidentSetSize,即实际驻留集大小,表示......
  • 【LeeCode】557. 反转字符串中的单词 III
    【题目描述】给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。【示例】【代码】adminpackagecom.company;//2023-03-23impo......
  • 【LeeCode】1616. 分割两个字符串得到回文串
    【题目描述】给你两个字符串 a 和 b ,它们长度相同。请你选择一个下标,将两个字符串都在 相同的下标 分割开。由 a 可以得到两个字符串: aprefix 和 asuffix ,满足......
  • LeeCode刷题记录——哈希表
    根本没学过这个东西,被薄纱,直接躺板板了,抑郁的时候垂死病中惊坐起,赶紧上来记一下笔记。题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。评论区和官方......