一个数组先递增后递减求最大值

一个数组先递增后递减求最大值

public classMain2 {

static int[] a={1,2,3,4,5,6,7,8,6,5,4,2,1};

static int count=0;

static int getmax(int front,int rear){

++count;

if(front==rear)

return a[front];

int mid=(front+rear)/2;

if(a[front]==a[mid]&&front!=mid)returngetmax(front+1,mid-1 );

if(a[mid]==a[rear]&&mid!=rear)returngetmax(mid+1, rear-1);

if(a[front]==a[rear]||a[front]<a[mid]&&a[mid]>a[rear]){

return Math.max(getmax(front,mid), getmax(mid+1, rear));

}

else{

if(a[mid]<a[rear]){

return getmax(mid+1,rear);

}

return getmax(front,mid);

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

a=new int[10000000];

int c=0;

for(int i=0;i<a.length;++i)

{

if(i<=2){

a[i]=++c;

}

else{

a[i]=--c;

}

}

System.out.println(getmax(0,a.length-1));

System.out.print(count);

}

}

经验分享 程序员 微信小程序 职场和发展