魔術索引。 在數組A[0…n-1]中,有所謂的魔術索引,滿足條件A[i] = i。給定一個有序整數數組,編寫一種方法找出魔術索引,若有的話,在數組A中找出一個魔術索引,如果沒有,則返回-1。若有多個魔術索引,返回索引值最小的一個。
示例1:
輸入:nums = [0, 2, 3, 4, 5]
輸出:0
說明: 0下標的元素為0
代碼
class Solution {public int findMagicIndex(int[] nums) {return find(nums,0,nums.length-1);}public int find(int[] nums,int left,int right) {if(left>right) return -1;//遞歸邊界int mid=left+(right-left)/2;//中點int l=find(nums,left,mid-1);//找左邊if(l!=-1)return l;else if(nums[mid]==mid)//找到了return mid;else return find(nums, mid+1, right);//找右邊}
}