专栏首页LeetCode解题面试题 08.03. 魔术索引
原创

面试题 08.03. 魔术索引

链接

魔术索引。 在数组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 

}

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 程序员面试金典 - 面试题 08.03. 魔术索引(二分递归)

    魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。

    Michael阿明
  • 魔术索引

    魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔...

    你的益达
  • python技术面试题(十四)--数据库索引

    You raise me up,so I can stand on mountains .You raise me up,to walk on stormy s...

    小闫同学啊
  • 面试题-Mysql索引原理

    大家是不是感觉弱爆了,随着工作经验的增加,我对索引有了更深入的了解,下面就来分享下我眼中的索引,分享以问题的形式,从敲门到进门。

    别明天就今天吧
  • 分布式搜索引擎面试题(一)

    Lucene是一套用于全文检索和搜索的开放源代码程序库。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你...

    码农小胖哥
  • 分布式搜索引擎面试题(二)

    创建一个index,index包含多个shard,每个shard都是一个最小工作单元,每个 shard 存储部分数据。

    码农小胖哥
  • BAT面试题53:了解如何重置索引和多级索引吗?

    二维数据通常称一个维度为行,另一个为列。且行有行索引,列有列索引。如下图,行索引为:[falcon,barrot,lion,monkey],列索引为:[clas...

    double
  • 一天一大 leet(魔术索引)难度:简单-Day20200731

    魔术索引。在数组 A[0…n-1]中,有所谓的魔术索引,满足条件 A[i] = i。 给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组 A 中找...

    前端小书童
  • 面试题|无索引如何删除亿级数据?

    存在索引的情况下就比较简单,直接利用索引进行删除,写一个for 循环语句 每次删除500行,每次判断delete 影响的行数可以累加计算删除了多少行,直到删除结...

    用户1278550

扫码关注云+社区

领取腾讯云代金券