一、题目

二、想法

三、复杂度分析

四、优秀解法

五、学到了什么


一、题目

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. 山脉数组的峰顶索引相关推荐

  1. python 山脉数组的峰顶索引

    | 山脉数组的峰顶索引 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] ...

  2. 20191022:(leetcode习题)山脉数组的峰顶索引

    山脉数组的峰顶索引 题目 大致思路 代码实现 题目 我们把符合下列属性的数组 A 称作山脉: A.length >= 3存在 0 < i < A.length - 1 使得A[0] ...

  3. [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找)

    [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找) 题目:符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < ...

  4. 【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 题目描述 符合下 ...

  5. leetcode 852. 山脉数组的峰顶索引(二分查找)

    题目 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[ ...

  6. LeetCode(852)——山脉数组的峰顶索引(JavaScript)

    我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] ...

  7. leetcode852. 山脉数组的峰顶索引(二分法)

    我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < - A[i-1] & ...

  8. 852.山脉数组的峰顶索引---LeetCode(java实现)

    解题思路: 思路很简单:就是遍历数组,找到一个数组索引,使得他前一个元素比他小,后一个元素比他大. 不过这里需要注意:遍历的时候从索引1开始. class Solution {public int p ...

  9. LeetCode 852. 山脉数组的峰顶索引

最新文章

  1. java程序通过命令行运行之Path和ClassPath的注意点
  2. 宏基因组学习交流5群成立
  3. Shiro笔记(三)授权
  4. 另一种绕过 Android P以上非公开API限制的办法
  5. C语言--在终端输入多行信息,找出包含“ould”的行,并打印改行
  6. CentOS7下MySQL5.7的安装
  7. 电路理论与linkage Mapper的安装
  8. 四步奠定SDN部署基石
  9. 【Flink】Flink 写入 Clickhouse 大对象直接进入老年代 导致OOM
  10. android系统图标大小
  11. css3 页面翻转效果.
  12. Hibernate讲解(三)-类映射文件中常用属性的了解
  13. zabbix-agent自定义监控项
  14. php 按key大小排序,PHP实现二维数组根据key进行排序的方法
  15. [笔记][随笔]近期小结
  16. java的帮助文档(API)
  17. 基本知识 100024
  18. 微信小程序列表切换样式简单案例
  19. hikaricp mysql_HikariCP
  20. Python高级教程

热门文章

  1. 微信一手机号可注册两账号
  2. cesium实现模型动态移动效果
  3. 20145202马超《网络对抗》漏洞分析
  4. 电脑蓝屏处理:WHEA_UNCORRECTABLE_ERROR
  5. Mysql中的force index和ignore index
  6. gradle构建android项目详解
  7. 疫情是否给你留下了强迫症
  8. Html5+CSS+Less
  9. VS中的代码拷贝到word中时,中文注释会出现乱码的解决办法
  10. image与base64相互转换