leetcode每日不做题
461. 汉明距离
852. 山脉数组的峰顶索引
374. 猜数字大小
278. 第一个错误的版本
474. 一和零
231. 2 的幂
342. 4的幂
1074. 元素和为目标值的子矩阵数量
477. 汉明距离总和
12. 整数转罗马数字
1190. 反转每对括号间的子串
692. 前K个高频单词
1738. 找出第 K 大的异或坐标值
1442. 形成两个异或相等数组的三元组数目
993. 二叉树的堂兄弟节点
421. 数组中两个数的最大异或值
13.罗马数字转整数
本文档使用 MrDoc 发布
-
+
首页
852. 山脉数组的峰顶索引
[力扣原题链接](https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/) ## 题目 符合下列属性的数组`arr`称为**山脉数组**: * `arr.length >= 3` * 存在`i(0 < i < arr.length - 1)`使得: `arr[0] < arr[1] < ... arr[i-1] < arr[i]` `arr[i] > arr[i+1] > ... > arr[arr.length - 1]` 给你由整数组成的**山脉数组**`arr`,返回任何满足 `arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1]`的下标 `i`。 **示例 1:** ``` 输入:arr = [0,1,0] 输出:1 ``` **示例 2:** ``` 输入:arr = [0,2,1,0] 输出:1 ``` **示例 3:** ``` 输入:arr = [0,10,5,2] 输出:1 ``` **示例 4:** ``` 输入:arr = [3,4,5,1] 输出:2 ``` **示例 5:** ``` 输入:arr = [24,69,100,99,79,78,67,36,26,19] 输出:2 ``` **提示:** ![](/media/202106/2021-06-15_184019.png) ## 思路 二分查找,找到一个同时大于左右两边整数的值,它的下标就是要找的`i`的值 ## 代码 语言:Java ``` class Solution { public int peakIndexInMountainArray(int[] arr) { int low = 0; int high = arr.length - 1; int mid = 0; while (low < high) { // 计算中间值 mid = low + (high - low) / 2; //防止int溢出 if(mid == 0 || mid == arr.length-1) { break; } if( (arr[mid] < arr[mid-1]) && (arr[mid] > arr[mid+1])) { // mid下标对应的值大于左右两边的值,命中 break; } if(arr[mid] > arr[mid-1]) { // mid下标对应的值大于左边值,查找的值在mid左边 high = mid; } else if(arr[mid] < arr[mid+1]) { // mid下标对应的值大于右边值,查找的值在mid右边 low = mid; } } return mid; } } ```
renyi567
2021年6月15日 18:43
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
阅读量
次
本站总访问量
次
本站访客数
人次
Markdown文件
分享
链接
类型
密码
更新密码