题目描述
魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。
思路
输出对应索引值的值,如果有多个就返回索引值最小的一个,思路是挨个进行遍历如果目标值=索引值,就返回索引值最小的一个。
class Solution {
public int findMagicIndex(int[] nums) {
int flag = 0;//定义一个目标值
while (flag < nums.length) {//循环的条件是目标值<数组的长度
if (nums[flag] == flag) {//如果值=索引值
return flag;//返回索引值
} else if (nums[flag] > flag) { //重点 , 过滤掉不需要比较的元素,如果值大于就目标值
flag = nums[flag];//把这个值赋给目标值
}else{
flag++;//如果目标值< 小于当前的值,目标值就往后自增
}
}
return -1;//找不到就返回-1
}
}