Leetcode之二分法专题-852. 山脉数组的峰顶索引(Peak Index in a Mountain Array)
Leetcode之二分法专题-852. 山脉数组的峰顶索引(Peak Index in a Mountain Array)
我们把符合下列属性的数组 A 称作山脉:
- A.length >= 3
- 存在 0 < i < A.length - 1使得A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]
给定一个确定为山脉的数组,返回任何满足 A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1] 的 i 的值。
示例 1:
输入:[0,1,0]
输出:1
示例 2:
输入:[0,2,1,0]
输出:1
提示:
- 3 <= A.length <= 10000
- 0 <= A[i] <= 10^6
- A 是如上定义的山脉
分析:二分法,题中要求返回一个符合要求的数组下标。
利用二分法,首先一分为二,然后取mid,判断是否符合 A[i-1] < A[i] > A[i+1]
如果不符合,则又分为两种情况:
1、A[i-1] < A[i] < A[i+1] 这种情况则把left置为mid+1
2、A[i-1] > A[i] > A[i+1] 这种情况把right置为mid-1
如果符合,则直接返回下标。
AC代码:
class Solution {
    public int peakIndexInMountainArray(int[] A) {
        if(A==null || A.length==0){
            return 0;
        }
        int left = 0;
        int right = A.length-1;
        while(left<=right){
            int mid = (left+right)/2;
            if(A[mid-1]<A[mid] && A[mid]>A[mid+1]){
                return mid;
            }else if(A[mid-1]>A[mid]){
                right = mid-1;
            }else {
                left = mid+1;
            }
        }
        return 0;
    }
}
Leetcode之二分法专题-852. 山脉数组的峰顶索引(Peak Index in a Mountain Array)的更多相关文章
- [Swift]LeetCode852. 山脉数组的峰顶索引 | Peak Index in a Mountain Array
		Let's call an array A a mountain if the following properties hold: A.length >= 3 There exists som ... 
- 力扣(LeetCode) 852. 山脉数组的峰顶索引
		我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] ... 
- LeetCode 852. 山脉数组的峰顶索引 (二分)
		题目链接:https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/ 我们把符合下列属性的数组 A 称作山脉: A.length ... 
- LeetCode 852. Peak Index in a Mountain Array C++ 解题报告
		852. Peak Index in a Mountain Array -- Easy 方法一:二分查找 int peakIndexInMountainArray(vector<int>& ... 
- 【Leetcode_easy】852. Peak Index in a Mountain Array
		problem 852. Peak Index in a Mountain Array solution1: class Solution { public: int peakIndexInMount ... 
- C#LeetCode刷题之#852-山脉数组的峰顶索引(Peak Index in a Mountain Array)
		问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4003 访问. 我们把符合下列属性的数组 A 称作山脉: A.le ... 
- LeetCode 852. Peak Index in a Mountain Array (山脉数组的峰顶索引)
		题目标签:Binary Search 题目给了我们一组 int array,让我们找到数组的 peak. 利用 binary search, 如果数字比它后面那个数字小,说明还在上坡,缩小范围到右半边 ... 
- [LeetCode] Peak Index in a Mountain Array 山形数组的顶峰坐标
		Let's call an array A a mountain if the following properties hold: A.length >= 3 There exists som ... 
- 【LeetCode】852. Peak Index in a Mountain Array 解题报告(Python)
		作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 二分查找 查找最大值位置 寻找第一个下降的位置 日期 ... 
随机推荐
- C#读取Modbus数据
			最近在做采集的一些任务所以学了一下Modbus通信,学了好几天昨天终于把大概弄明白了,其实简单来说就是客户端向设备发送一个请求报文请求数据,服务器端根据请求报文向客户端端回发一个报文,客户端在接收到响 ... 
- 推荐:经典SQL语句大全
			一.基础 .说明:备份sql server--- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mss ... 
- spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析
			spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析 TransportContext 首先官方文档对Transpor ... 
- 逆向MFC程序
			目录 @ 1 MFC执行流程 1.1 环境支持 1.2 分析 1.3 实践探索 1.3.1 创建一个MFC程序 1.3.2 下关键断点并调试 1.4 转向MFC库源文件中观测 2 逆向 2.1 特征码 ... 
- 牛客第三场 J  LRU management
			起初看到这道题的时候,草草就放过去了,开了另一道题,结果开题不顺利,总是感觉差一点就可以做出来,以至于一直到最后都没能看这道题qaq 题意:类似于操作系统上讲的LRU算法,有两个操作,0操作代表访问其 ... 
- 动态规划_Sumsets_POJ-2229
			Farmer John commanded his cows to search . Here are the possible sets of numbers that sum to : ) +++ ... 
- 【Maven】Mac 使用 zsh 后 mvn 命令就无效
			RT -- 解决方法: 打开 .zshrc 文件,将 Maven 环境变量配置加入其中,或者 将 source ~/.bash_profile 添加到 .zshrc 中. PS: 之前搞不懂,每次使用 ... 
- 关于报错:The Microsoft.ACE. Oledb.12.0 provider was not registered on the local computer
			错误描述:The Microsoft.ACE. Oledb.12.0 provider was not registered on the local computer 最近在Web项目中做一个自动生 ... 
- middleware中间件
			django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项目的se ... 
- ArrayList 的使用方法【摘要】
			ArrayList 的使用方法 1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: (1)动态的增加和减少元素 ... 
