魔术索引II

题目

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

[1,1,3,4,5]
返回:true

应该是从i:0~n - 1进行遍历,如果当前A[i] == i,返回true;如果A[i] < i, 则i ++;如果A[i] > i,则令i = A[i],即跳过A[i] - i个元素(因为序列是非递减的,所以A[i] > i时,至少到i = A[i]处,才有可能出现A[i] == i)。

例如2, 2, 2, 4, 5序列,i == 0时,A[i] = 2,则应跳过i = 1,直接比较i = 2处。
代码如下所示:

class MagicIndex:
    def findMagicIndex(self, A, n):
        index = 0
        while(index<n):
            if A[index]<index:
                index += 1
            elif A[index] > index:
                index = A[index]
            else:
                return True

        return False

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    十里江城阅读 1,223评论 0 1
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,262评论 1 44
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,408评论 0 2
  • 子Zǐ曰yuē:“饭fàn疏shū食shí,饮yǐn水shuǐ,曲qǔ肱ɡōnɡ而ér枕zhěn之zhī,乐lè亦...
    小绿植物阅读 57评论 0 0
  • 妈妈说我还是婴儿的时候,刚出月子,我就成了初为人母最怕的那个夜啼郎。你恼怒地不让妈妈抱我,看着莫名其妙大哭的我说:...
    千寻凌霄阅读 459评论 0 1