zoukankan      html  css  js  c++  java
  • 找峰值I II · Find Peak Element I ii

    一句话思路:找最大的元素。没有target?

    一刷报错:

    1. 一定要用二分,否则复杂度不是最优。
    2. 判断条件是nums[mid] < nums[mid + 1],还是基于中位数比较的原理。不是nums[start] < nums[start + 1]。(代码不一样都没看出来,太粗心了)

    总结:用二分法往大的一边走,缩小到最后的小区间,比较一下两头就行了。

    class Solution {
        /**
         * @param A: An integers array.
         * @return: return any of peek positions.
         */
        public int findPeak(int[] A) {
            // write your code here
            int start = 1, end = A.length-2; // 1.答案在之间,2.不会出界 
            while(start + 1 <  end) {
                int mid = (start + end) / 2;
                if(A[mid] < A[mid - 1]) {
                    end = mid;
                } else if(A[mid] < A[mid + 1]) {
                    start = mid;
                } else {
                    end = mid;
                }
            }
            if(A[start] < A[end]) {
                return end;
            } else { 
                return start;
            }
        }
    }
    View Code

    [抄题]:

     [暴力解法]:

    时间分析:

    空间分析:

    [思维问题]:

    [一句话思路]:

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

    [一刷]:

    [二刷]:

    [三刷]:

    [四刷]:

    [五刷]:

      [五分钟肉眼debug的结果]:

    [总结]:

    [复杂度]:Time complexity: O() Space complexity: O()

    [英文数据结构或算法,为什么不用别的数据结构或算法]:

    [关键模板化代码]:

    [其他解法]:

    [Follow Up]:

    [LC给出的题目变变变]:

     [代码风格] :

  • 相关阅读:
    新博客第一篇,字符串 Unicode 转义
    C# 泛型方法的类型推断
    一个改进 LRU 算法的缓冲池 update 2013.7.15
    C# 判断类型间能否隐式或强制类型转换,以及开放泛型类型转换 update 2015.02.03
    C# 词法分析器(三)正则表达式
    java面试题(二)
    Map的迭代
    Spring aop切面插入事物回滚
    Log4J的配置
    js中将yyyyMMdd格式的日期转换
  • 原文地址:https://www.cnblogs.com/immiao0319/p/7887108.html
Copyright © 2011-2022 走看看