最强解析面试题:魔术索引

Posted 魏小言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最强解析面试题:魔术索引相关的知识,希望对你有一定的参考价值。


最强解析面试题:魔术索引

文章讲解 “ 魔术索引 ” 经典面试题,包含思路及源码,及解惑!

题目

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

示例1

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

思路

注意和查找相同数值不同,判定数值区间时,需要等于mid

代码


func main() 
   fmt.Println("res:", Res())

func Res() bool 
   var tar = []int1, 2, 3, 4, 5
   s := 0
   e := len(tar)
   for ; s < e; 
      mid := (s + e) / 2
      if tar[mid] == mid 
         return true
       else if tar[mid] > mid 
         e = mid
       else 
         s = mid
      
   
   return false

附录

自负和自大真的是搞笑!

以上是关于最强解析面试题:魔术索引的主要内容,如果未能解决你的问题,请参考以下文章

程序员面试金典面试题 08.03. 魔术索引

最强解析面试题:Goland 消费生产模式实现

最强解析面试题:替换空格「建议收藏!」

最强解析面试题:替换空格「建议收藏!」

最强解析面试题:硬币计算 动态规划

最强解析面试题:Goland 循环队列实现