z12_852. 山脉数组的峰顶索引
一、题目
二、想法
三、复杂度分析
四、优秀解法
五、学到了什么
一、题目
852. 山脉数组的峰顶索引 https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/
二、想法
/*** 二分查找法,找到连续三个数是先上后下的转折点,进行返回*/fun peakIndexInMountainArray(arr: IntArray): Int {var left = 0var right = arr.size - 1while (left <= right) {val mid = left + (right - left) /2//边界问题if (mid == 0) {left = mid + 1continue} else if (mid == arr.size - 1) {right = mid - 1continue}if (arr[mid -1 ] <arr[mid] && arr[mid] > arr[mid + 1]) {return mid} else if (arr[mid -1 ] <arr[mid] && arr[mid] < arr[mid + 1]) {left = mid + 1} else {right = mid - 1}}return -1}
三、复杂度分析
时间复杂度:O(logN), 每次循环都会丢弃一半的查找空间 空间复杂度:O(1), 使用一个整数型变量mid来记录中间值
四、优秀解法
/*** 将山脉数组中所有满足 A[i] < A[i+1] 的 i 点标记为 True,不满足的点标记为 False。* 则一个山脉数组可以标记为:[True, True, True, ..., True, False, False, ..., False]。* 例如山脉数组 [1, 2, 3, 4, 1] 可以标记为 True, True, True, False。* 在山脉数组上使用二分查找,找出满足 A[i] < A[i+1] 的最大 i。*/fun peakIndexInMountainArray(arr: IntArray): Int {var left = 0var right = arr.size - 1while (left <= right) {val mid = left + (right - left) / 2if (arr[mid] < arr[mid+1]) {left = mid + 1} else {right = mid - 1}}return left}
五、学到了什么
z12_852. 山脉数组的峰顶索引相关推荐
- python 山脉数组的峰顶索引
| 山脉数组的峰顶索引 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] ...
- 20191022:(leetcode习题)山脉数组的峰顶索引
山脉数组的峰顶索引 题目 大致思路 代码实现 题目 我们把符合下列属性的数组 A 称作山脉: A.length >= 3存在 0 < i < A.length - 1 使得A[0] ...
- [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找)
[Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找) 题目:符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < ...
- 【LeetCode】852. 山脉数组的峰顶索引(C++)
852. 山脉数组的峰顶索引 1 题目描述 2 示例描述 2.1 示例1 2.2 示例2 2.3 示例3 2.4 示例4 2.5 示例5 3 解题提示 4 解题思路 5 代码详解 1 题目描述 符合下 ...
- leetcode 852. 山脉数组的峰顶索引(二分查找)
题目 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[ ...
- LeetCode(852)——山脉数组的峰顶索引(JavaScript)
我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] ...
- leetcode852. 山脉数组的峰顶索引(二分法)
我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < - A[i-1] & ...
- 852.山脉数组的峰顶索引---LeetCode(java实现)
解题思路: 思路很简单:就是遍历数组,找到一个数组索引,使得他前一个元素比他小,后一个元素比他大. 不过这里需要注意:遍历的时候从索引1开始. class Solution {public int p ...
- LeetCode 852. 山脉数组的峰顶索引
最新文章
- java程序通过命令行运行之Path和ClassPath的注意点
- 宏基因组学习交流5群成立
- Shiro笔记(三)授权
- 另一种绕过 Android P以上非公开API限制的办法
- C语言--在终端输入多行信息,找出包含“ould”的行,并打印改行
- CentOS7下MySQL5.7的安装
- 电路理论与linkage Mapper的安装
- 四步奠定SDN部署基石
- 【Flink】Flink 写入 Clickhouse 大对象直接进入老年代 导致OOM
- android系统图标大小
- css3 页面翻转效果.
- Hibernate讲解(三)-类映射文件中常用属性的了解
- zabbix-agent自定义监控项
- php 按key大小排序,PHP实现二维数组根据key进行排序的方法
- [笔记][随笔]近期小结
- java的帮助文档(API)
- 基本知识 100024
- 微信小程序列表切换样式简单案例
- hikaricp mysql_HikariCP
- Python高级教程