首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题 08.03. 魔术索引

面试题 08.03. 魔术索引

原创
作者头像
Michel_Rolle
修改2021-03-08 09:57:40
9980
修改2021-03-08 09:57:40
举报
文章被收录于专栏:LeetCode解题LeetCode解题

链接

魔术索引。 在数组A0...n-1中,有所谓的魔术索引,满足条件Ai = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。

示例 1:

输入:nums = [0, 2, 3, 4, 5]
 输出:0
 说明: 0下标的元素为0

示例 1:

 输入:nums = [1, 1, 1]
 输出:1
func findMagicIndex(nums []int) int {

	res := 0
	var min = math.MaxInt32
	for i := range nums {
		if i == nums[i] {
			res = i
		} else {
			continue
		}
		if res <= min {
			min = res
		}
	}

	if min == math.MaxInt32 {
		return -1
	}

	return min

}


func findMagicIndex2(nums []int) int {

 for i:=0 ; i< len(nums); i++{
        if nums[i] == i{
            return i
        }else if nums[i] > i{ // 如果nums[i] > i, 说明 i 至少为 nums[i] 时才可能有结果
            i = nums[i] - 1
        }
    }
    return -1 

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档