文章目录
原题陈述:
- leetcode-cn 第852题 - 山脉数组的峰顶索引
- leetcode-cn 第69题 - x的平方根
题型概括
1. 是一个有序序列
在852题中,对山脉数组的定义是一个先递增后递减的序列 
 在69题中,可以把待遍历 x 的取值认为是一个自然数递增序列
2. target值均不明确显示在题中,且不作为参数传入
在852题中,target 值是序列中的第一个最大数字
 在69题中,target 值是 [ 0 : x ] 序列中最后一个小于等于 
    
     
      
       
        
         x
        
       
      
      
       \sqrt{x}
      
     
    x 的整数
题解分析
852题题解:找最大
class Solution:
    def peakIndexInMountainArray(self, arr: List[int]) -> int:
        res = 0
        lenth = len(arr)
        start = 0
        end = lenth
        while start <= end :
            mid = (end - start) // 2 + start
            if arr[mid] > arr[mid+1]:
                end = mid - 1
                res = mid
            else:
                start = mid + 1 
        return res
69题题解:找最小
class Solution:
    def mySqrt(self, x: int) -> int:
        if 0 < x <= 3: return 1
        elif x == 0:return 0
        left = 0
        right = x 
        while left <= right:
            mid = (right - left) // 2 + left
            if mid*mid <= x:
                left = mid + 1 
                ans = mid
            else:
                right = mid - 1 
        return ans
对比两题答案,可知,二分查找的骨架不变,均为:
left = 0
right = x 
while left <= right:
    mid = (right - left) // 2 + left
    if Condition:
    	...
    	res = mid
    else:
    	...
return res










