新手算法学习之路----二分法Maximum-in-Mountain-Sequence
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手算法学习之路----二分法Maximum-in-Mountain-Sequence相关的知识,希望对你有一定的参考价值。
题目:在一个先升序后降序的数组中找到最大值,如果没找到就返回-1;
[ 1,4,6,8,6,4,3,2] return 8;
[10,9,8,7,6,5] return 10
思路:由于没有像其他数列一样给出一个特定值,这个时候需要一个可以用找到中间值M1 和M1+1进行判断,如果[M1] >[M1+1],就可以判断此时M1和M1+1在降序上;如果[M1]<[M1+1]说明M1 和 M1+1在升序上。
代码:
int SearchMaximum(int []arry){ int start = 0, end = arry.length-1,mid; if(arry.length==0||arry==null) return -1; while(start+1<end){ mid=start+(end-start)/2; if(arry[mid]>=arry[mid+1]){ end = mid; }else { start =mid; } } return Math.max(arry[end], arry[start]); }
以上是关于新手算法学习之路----二分法Maximum-in-Mountain-Sequence的主要内容,如果未能解决你的问题,请参考以下文章
新手算法学习之路----二分法Maximum-in-Mountain-Sequence
新手算法学习之路----二分法Search-for-a-Range