zoukankan      html  css  js  c++  java
  • 852. Peak Index in a Mountain Array

    Let's call an array A a mountain if the following properties hold:

    • A.length >= 3
    • There exists some 0 < i < A.length - 1 such that A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]

    Given an array that is definitely a mountain, return any i such that A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1].

    Example 1:

    Input: [0,1,0]
    Output: 1
    

    Example 2:

    Input: [0,2,1,0]
    Output: 1
     1 //linear approach: Time: O(n), Space: O(1)
     2     public int peakIndexInMountainArray(int[] A) {
     3         if (A == null || A.length == 0) {
     4             return -1;
     5         }
     6         
     7         for (int i = 0; i < A.length - 1; i++) {
     8             if (A[i] > A[i + 1]) {
     9                 return i;
    10             }
    11         }
    12         
    13         return -1;
    14     }
    15 
    16 //binary search approach: Time: O(logn), Space: O(1)
    17     public int peakIndexInMountainArray(int[] A) {
    18         if (A == null || A.length == 0) {
    19             return -1;
    20         }
    21         
    22         int start = 0;
    23         int end = A.length - 1;
    24         
    25         while (start < end) {
    26             int mid = start + (end - start) / 2;
    27             if (A[mid] < A[mid + 1]) {
    28                 start = mid + 1;//注意start是指到mid + 1, 而end是指到mid
    29             } else if (A[mid] > A[mid + 1]) {
    30                 end = mid;
    31             } else {
    32                 return mid;//这里题目表示没有两个数相等的情况,但为了严谨可以加上这句
    33             }
    34         }
    35         
    36         return start;//返回start和end都可以,因为while停止的条件就是start = end了
    37     }
    39 //注: test cases: 
    40 //[0,1,0] 奇数情况
    41 //[0,1,2,0] 偶数情况

     similar: 162. Find Peak Element

  • 相关阅读:
    (二)unittest之跳过测试和预期失败的用例
    (一)基本使用
    python从入门到入魔
    (十)中断测试
    (九)进程测试
    (八)安装、卸载与升级更新测试
    (七)功能测试
    (六)内存分析,待补充
    (五)跑Monkey过程中出现的ANR问题分析
    (四)一种精准monkey测试的方法
  • 原文地址:https://www.cnblogs.com/jessie2009/p/9761142.html
Copyright © 2011-2022 走看看