针对排序的数组或者数字,折半查找,时间复杂度O(ologn)
计算中值:
mid=L+(H-L)/2
class Solution {
public int mySqrt(int x) {
if(x<=1){
return x;
}
int l=1;
int h=x;
while(l<=h){
int mid=l + (h-l) / 2;
int sqrt= x / mid;
if(sqrt==mid){
return mid;
}else if(mid>sqrt){
h=mid-1;
}else{
l=mid+1;
}
}
return h;
}
}
class Solution {
public char nextGreatestLetter(char[] letters, char target) {
int l=0;
int h=letters.length-1;
while(l<=h){
int mid=l+(h-l)/2;
if(letters[mid]<=target){
l=mid+1;
}else{
h=mid-1;
}
}
return l<letters.length?letters[l]:letters[0];
}
}