zoukankan      html  css  js  c++  java
  • leetcode 162

    一个整数队列. 每两个相邻的数都不相同. 找到一个数, 使得其大于相邻的数, 输出该数的index. 如果有多个满足条件的数, 只需要输出任意一个即可. 要求算法复杂度为O(logn)

    因为要求算法复杂度是O(n)一定是二分法. 然后容易知道的一点是对于任意满足条件的整数队列, 都可以找到这样的数.

    首先任意取一个数, 如果这个数满足条件, 那就输出; 如果不满足的话, 如果左边的数更大, 那么就从左边的子列中寻找, 右边亦然.
    所以代码就显而易见了

    class Solution:
        def findPeakElement(self, nums: List[int]) -> int:
            start = 0
            end = len(nums) - 1
            while start < end:
                mid = (start + end) // 2
                if nums[mid] < nums[mid + 1]:
                    start = mid + 1
                else:
                    end = mid
            return start
            
    
  • 相关阅读:
    bzoj3211 花神游历各国
    bzoj1010
    day8
    day6&7
    bzoj1087
    noi同步赛day1
    bzoj1076
    day3&4&5
    bzoj1079 dp
    cholesky分解
  • 原文地址:https://www.cnblogs.com/mangmangbiluo/p/15585549.html
Copyright © 2011-2022 走看看