zoukankan      html  css  js  c++  java
  • 寻找峰值

    http://www.lintcode.com/zh-cn/problem/find-peak-element/

    注意点:以mid的位置为分类条件,波峰,上升下降,波谷,从而不会遗漏什么情况。

        设置区间长度为3比较好

     1 public int findPeak(int[] A) {
     2     if(A == null || A.length == 0) return -1;
     3     int start = 0, end = A.length - 1;
     4     //先找左上升区间,再找右下降区间,不可行,设置区间长度为3试试
     5     while(end - start > 1) {
     6         int mid = start + (end - start) / 2;
     7         if(A[mid] > A[mid -1] && A[mid] > A[mid + 1]) return mid;
     8         if(A[mid] > A[mid -1])`{
     9             start = mid;
    10         } else {
    11             end = mid;
    12         }
    13     }
    14     //其实可能数组越界的,所以还是区间长度为3靠谱,也可以判断下start -1, end+ 1是否越界,
    15     //不越界就判断下面if,否则少一个判断条件
    16     
    17     if(A[start] > A[start -1] && A[start] > A[end]) return start;
    18     if(A[end] > A[start] && A[end] > A[end + 1]) return end;
    19     
    20 }
    21 public int findPeak(int[] A) {
    22     if (A ==null || A.length == 0) {
    23         return -1;
    24     }
    25     int start = 0; int end = A.length - 1; int mid;
    26     while (end - start > 2) {
    27         mid = start + (end - start) / 2;
    28         if(A[mid] > A[mid -1] && A[mid] > A[mid + 1]) {  //mid是波峰
    29             return mid;  
    30         } else if(A[mid] > A[mid -1] && A[mid] < A[mid + 1]) { //mid是上升沿
    31             start = mid;
    32         } else { //mid是下降沿或者波谷
    33             end = mid;
    34         }
    35     }
    36     mid = start + (end - start) / 2;
    37     if (A[mid] > A[start] && A[mid] > A[end]) {
    38         return mid;
    39     } else {
    40         return -1;
    41     }
    42 }
    View Code
  • 相关阅读:
    获取IPhone相册中图片的方法(包括获取所有图片)
    CocoaPods的安装与使用介绍
    屏幕截图
    图片水印(微博图片上面的个人签名)
    info.plist选项含义
    最苦恼的又重要的屏幕适配
    Redis
    python的约束库constraint解决《2018刑侦科题目》
    start to learn python!
    用户体验分析: 以 “南通大学教务管理系统微信公众号” 为例
  • 原文地址:https://www.cnblogs.com/ddcckkk/p/6806297.html
Copyright © 2011-2022 走看看