- 最强解析面试题:魔术索引
- 题目
- 示例1
- 思路
- 代码
- 附录
最强解析面试题:魔术索引
文章讲解 “ 魔术索引 ” 经典面试题,包含思路及源码,及解惑!
题目示例1在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个升序数组,元素值各不相同,编写一个方法,判断在数组A中是否存在魔术索引。
请思考一种复杂度优于o(n)的方法。 给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。
思路[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
}
附录
自负和自大真的是搞笑!



