• 852-山脉数组的峰顶位置--没懂


    2019-10-09

    1、自己最害怕二分查找了。搞不清楚结束条件,low和high的最终位置

    2、思路

    二分查找和顺序查找,但是顺序查找时间和占用内存效果都比二分查找要好

    3、比较中间位置的元素和左右两边位置值的大小!

    4、代码

     1 //一定要记住中间元素肯定是大于等于左边元素,因为是单峰值,整个数组是不是单调递增也不是单调递减
     2 class Solution {
     3 public:
     4     int peakIndexInMountainArray(vector<int>& A) {
     5         /*int i=0;
     6         while(i<A.size()-1){
     7             if(A[i]>A[i+1]) {
     8                 break;
     9             }
    10             i++;
    11         }
    12         return i;*/
    13         int low=0;
    14         int high=A.size();  
    15         int mid=0;
    16         while(low<high){
    17             mid=(low+high)/2;
    18             if(A[mid]>A[mid+1]&&A[mid]>A[mid-1]){
    19                 break;
    20             }
    21             else if(A[mid]>A[mid+1]){
    22                 high=mid;//这个是看别人写的,不明白为啥等于mid
    23             }
    24             else{
    25                 low=mid;//这个也不明白,混乱了
    26             }
    27         }
    28         return mid;
    29       }
    30 };
  • 相关阅读:
    多线程案例龟兔赛跑
    不靠谱的事
    生命的价值并不止于自己的幸福
    我的高中搞笑班主任
    AgileChina参会笔记
    上美食
    程序中保留一个Dump
    骗子公司驾到
    我的《野蛮生长》书摘
    最近看的书的清单
  • 原文地址:https://www.cnblogs.com/hehesunshine/p/11642801.html
Copyright © 2020-2023  润新知