[leetcode 10-15] 一、山峰数组的顶部(简单题)--二分法需要背的

()

		for i in range(1,len(arr)-1):
            if arr[i] == max(arr) and arr[i] > arr[i-1] and arr[i] > arr[i+1]:
                return i  # 这里一个max的时间复杂度就是o(n)了

这个其实还不是o(n)
不能用max,加算法复杂度
在这里插入图片描述
o(n) 解法

        for i in range(1, len(arr) - 1):
            if arr[i] > arr[i + 1]:
                ans = i
                break
        
        return ans

二分法的模板

		n = len(arr)
        left, right, ans = 1, n - 2, 0

        while left <= right:
            mid = (left + right) // 2  # 地板除
            if arr[mid] > arr[mid + 1]:
                ans = mid
                right = mid - 1
            else:
                left = mid + 1
        
        return ans

猜你喜欢

转载自blog.csdn.net/weixin_45492560/article/details/120791277
今日推荐