魔术索引I

在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个升序数组,元素值各不相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。
给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。

测试样例:

[1,2,3,4,5]
返回:false

方法一 :利用二分法O(logN)

也要考虑目标点在最开始或者末尾时的情况

class MagicIndex:
    def findMagicIndex(self, A, n):
        # write code here
        if A[0]<=0 and A[n-1]>=(n-1):
            pre = 0
            end = n-1

            while(pre<end):
                mid = int((pre+end)/2)
                if A[mid] == mid:
                    return True
                elif A[mid] > mid:
                    end = mid
                else:
                    pre = mid
            if A[pre] == pre:
                return True
            else:
                return False
        else:
            return False


if __name__ == '__main__':
    l = [0,2,3,4,5,6]
    s = MagicIndex()
    res = s.findMagicIndex(l,6)
    print(res)

方法二:

利用Python的enumerate

class MagicIndex:
    def findMagicIndex(self, A, n):
        for index,v in enumerate(A):
            if index == v:
                return True
        return False
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 锁定 viewport ontouchmove="event.preventDefault()" //锁定view...
    贞贞姐阅读 239评论 0 3
  • 产后恢复,以及坐月子的注意事项,咱们之前说过很多了,今天再缕一缕产后运动、简单家务活的正确方法。 别问妙妈为啥写这...
    妙妈养成记阅读 814评论 0 4
  • 文/假药君 1. “喂喂,最近那家伙好像很喜欢拿着手机拍什么东西啊?” “好像是诶。不知道人间又在流行什么奇怪的东...
    假药君阅读 533评论 0 1
  • 昨天我们说了麦凯66的端,今晚给你说后端 四:客户的业务背景介绍 1 客户的前一个工作公司名称—— 地址—— 2...
    A一颗奔腾的心阅读 233评论 0 0