585.Maximum Number in Mountain Sequence
1.Description(Medium)
Given a mountain sequence ofn
integers which increase firstly and then decrease, find the mountain top.
Example
Givennums
=[1, 2, 4, 8, 6, 3]
return8
Givennums
=[10, 9, 8, 7]
, return10
2.Code
这道题用的是三分,而不是二分 三分是用两个mid的 二分处理的是,连续上升或连续下降的问题 三分处理的是,连续上升接连续下降的问题
二分处理的是有序的问题,如递增,或者递减
三分解决的是极值问题,也就是凸函数,如 y = x^2, 求最小值,你可以在[-oo, oo]区间内三分
public int mountainSequence(int[] nums) {
if(nums==null || nums.length==0){
return -1;
}
int left=0;
int right=nums.length-1;
while(left+1<right){
int mid1=left+(right-left)/2;
int mid2=right-(right-mid1)/2;
if(nums[mid1]<nums[mid2]){
left=mid1+1;
}else if(nums[mid1]>nums[mid2]){
right=mid2-1;
}else{
left=mid1;
right=mid2;
}
}
return nums[left]>nums[right]?nums[left]:nums[right];
}
Last updated
Was this helpful?