牛客网 | 魔术索引II

来源:互联网 发布:淘宝卖灵符 法律 编辑:程序博客网 时间:2024/04/25 09:35

题目描述

在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个不下降序列,元素值可能相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。

给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。

测试样例:
[1,1,3,4,5]
返回:true
主要考察动态规划,此类问题可以参考http://www.cnblogs.com/wuchanming/p/4149788.html

import java.util.*;public class MagicIndex {    public boolean findMagicIndex(int[] A, int n) {        // write code here        if(n==0)    return false;        return find(A,0,n-1);    }    public boolean find(int[] A,int left,int right)    {        if(left<=right)        {            int mid = (left+right)/2;            if(mid == A[mid])   return true;            else if(mid>A[mid]) return find(A,mid+1,right)||find(A,left,Math.min(mid-1,A[mid]));            else return find(A,left,mid-1)||find(A,Math.max(A[mid],mid+1),right);        }        return false;    }}


0 0
原创粉丝点击