zoukankan      html  css  js  c++  java
  • 找出有序整数数组中下标与值相同的所有元素

    首先这个问题绝对可以在O(n)的时间内求解,现在主要想一下能不能有更快的方法。

    1)

    divide-conquer,分解成子数组后处理

    2)

    二分查,子数组array[s,t]里边

    mid = (s+t)/2 

    if t < array[mid]:

      // no need to check the part after mid

    else if s > array[mid]:

         // no need to check the part before mid

    而,如果元素的值都不相同

    if mid < array[mid]:

         // no need to check the part after mid

    else if mid > array[mid]:

         // no need to check the part before mid

    3)

    子数组array[s,t]里边,如果元素的值都不相同

    array[s] = s && array[t] = t

    那么这个子数组也不用检查了,一定都符合条件。

    没有仔细地算下时间复杂度,不过在值可以相同的情况下,最差情况应该要O(n)时间。在值都不等的情况下,最好情况应该就是O(1)时间。猜测平均时间应该比较接近log(n),如果有比较好的计算复杂度方法,欢迎留言给我。

  • 相关阅读:
    7.微软AJAX的解决方案
    6.投票系统
    5.JSON
    4.无刷新评论
    3.输入商品名称后自动弹出其价格示例
    2.JQuery AJAX
    1.AJAX简介
    网站优化
    防抖和节流
    在地址栏输入一次地址会发生什么
  • 原文地址:https://www.cnblogs.com/sunyongyue/p/1896675.html
Copyright © 2011-2022 走看看