首页 > 代码库 > 新手算法学习之路----二分法Maximum-in-Mountain-Sequence
新手算法学习之路----二分法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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。