zoukankan      html  css  js  c++  java
  • Sword 11

    https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/

    直接搜索是 O(n), 所以我们用二分来求解

    首先考虑一下为什么能二分,二分的原理就是每次根据中间的值都可以舍弃一半的解(也就是说解必然存在于另一半当中)

    而能够舍弃的前提就是原题有一定的规律,就比如说本题,如果numbers[mid] < numbers[j],证明mid 右边(不含 mid)都肯定不是解,于是令 j=mid,

    将结果放在 i ~ mid(左闭右闭区间)即可,>是对称的,只不过结果放在 mid+1 ~ j

    最后一种情况 numbers[mid] == numbers[j],我们没办法舍弃,因为左右都有可能,这个时候 j -- 令问题规模缩小即可,

    这个会导致本题最差情况是 O(n)

  • 相关阅读:
    python redis
    Celery
    RabbitMQ
    python的文件锁操作
    cloud-init alibaba
    cloud-init tencent
    关于 python 的类
    jnija2模板渲染
    python multiprocessing
    学习html5的WebSocket连接
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/14478562.html
Copyright © 2011-2022 走看看