• 每日一题之20201103(941. 有效的山脉数组)


    首先要弄清楚题目的意图,曾经在字节面试遇到过类似的题目,但那题是需要找出这个峰值。
    所以解法也肯定不一样。

    官方给的题解是直接遍历,我们这里采用双指针分别从头和尾往中间遍历,如果山脉符合要求,那么2个指针会停在同一个山脉


    class Solution:
        def validMountainArray(self, A: List[int]) -> bool:
            start, end = 0, len(A)-1
            # 保证start在正常范围并且左边的值小于右边, 循环如果退出,那么左侧的
            # 峰值也就找到了
            while start < len(A)-1 and A[start] < A[start+1]:
                start += 1
            # 右侧同理,保证左值大于右值
            while end > 0 and A[end-1] > A[end] :
                end -= 1
            # 这里需要注意的是,start可能和end在0索引处相遇,比如[2, 1]
            # 所以需要保证他们不在数组两端相遇
            # 如果数组为[] start != end 会返回False
            return start == end and 0 < start < len(A)-1
    
    

    777.jpg

  • 相关阅读:
    C# Nugut CsvHelper 使用
    C# 读写txt
    Js打开QQ聊天对话窗口
    Js 读写Cookies
    js 计算时间差
    C# 读取CSV文件
    使用 SqlBulkCopy 批量插入数据
    sql 添加列并设置默认值
    C# 获取Enum 描述和值集合
    SQL连接其它服务器操作
  • 原文地址:https://www.cnblogs.com/we8fans/p/13918317.html
Copyright © 2020-2023  润新知