栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 最强解析面试题:魔术索引
    • 题目
    • 示例1
    • 思路
        • 代码
    • 附录

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

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

题目

在数组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 = []int{1, 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
}
附录

自负和自大真的是搞笑!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号