leetcode 941. 有效的山脉数组

news/2025/2/28 19:36:11/

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 941. 有效的山脉数组.


题目描述

  1. 有效的山脉数组

给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false。

让我们回顾一下,如果 arr 满足下述条件,那么它是一个山脉数组:

arr.length >= 3 在 0 < i < arr.length - 1 条件下,存在 i 使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > ... > arr[arr.length - 1]

示例 1:

输入:arr = [2,1] 输出:false 示例 2:

输入:arr = [3,5,5] 输出:false 示例 3:

输入:arr = [0,3,2,1] 输出:true

提示:

1 <= arr.length <= 104 0 <= arr[i] <= 104

解题思路

法1

模拟:

  1. 遍历递增,不再递增时退出如果没有或者只有递增返回false,

  2. 遍历递减,不再递减时退出

  3. 判断当前位置与数组长度是否相等,如果相等返回真否则返回假

  • 时间复杂度(O(n))
  • 空间复杂度(O(1))

执行结果

法1

首先,我们从数组的开头开始递增扫描,直到找到最高点(arr[i] > arr[i+1])。

然后,我们检查最高点不能是数组的第一个或最后一个元素,如果满足条件,则继续进行递减扫描,直到数组的末尾。

最后,检查是否已经扫描到了数组的最后一个元素,如果是,则表示是有效的山脉数组,返回true,否则返回false。

func validMountainArray(arr []int) bool {
    n := len(arr)
    if n < 3 {
        return false
    }

    i := 0

    // 递增扫描
    for i+1 < n && arr[i] < arr[i+1] {
        i++
    }

    // 最高点不能是数组的第一个或最后一个元素
    if i == 0 || i == n-1 {
        return false
    }

    // 递减扫描
    for i+1 < n && arr[i] > arr[i+1] {
        i++
    }

    // 最后一个元素必须小于第一个递增序列的元素
    return i == n-1
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 24 ms , 在所有 Go 提交中击败了 41.30% 的用户 内存消耗: 6.3 MB , 在所有 Go 提交中击败了 68.84% 的用户 通过测试用例: 53 / 53 炫耀一下:

法2


法3


本文由 mdnice 多平台发布


http://www.ppmy.cn/news/86303.html

相关文章

OO设计原则

OO设计原则&#xff1a;SOLID SOLID SRP&#xff08;The Single Responsibility Principle&#xff0c;单一责任原则&#xff09; 不应有多于1个的原因使得一个类发生变化一个类&#xff0c;一个责任 OCP&#xff08;The Open-Closes Principle&#xff0c;开放-封闭原则&…

【Mysql】什么是大事务?以及大事务产生的问题

文章目录 一、定义二、大事务风险三、避免大事务四、案例创建表首先插入一条记录接着反复执行如下SQL&#xff0c;插入大量数据记录再次执行插入时&#xff0c;耗时会是几十秒&#xff0c;甚至几分钟:执行过程耗时较长时&#xff0c;模拟的也就是大事务。查看大事务 五、大表带…

Hausdorff 距离

1. 定义 给定欧氏空间中的两点集 A { a 1 , a 2 , . . . } \rm A\left \{a_1, a_2,... \right\} A{a1​,a2​,...} 和 B { b 1 , b 2 , . . . } \rm B\left \{b_1, b_2,... \right\} B{b1​,b2​,...} &#xff0c; H a u s d o r f f {\rm Hausdorff} Hausdorff 距离就是用…

《Java并发编程实战》课程笔记(二)

可见性、原子性和有序性问题&#xff1a;并发编程 Bug 的源头 源头之一&#xff1a;缓存导致的可见性问题 在单核时代&#xff0c;所有的线程都是在一颗 CPU 上执行&#xff0c;CPU 缓存与内存的数据一致性容易解决。 因为所有线程都是操作同一个 CPU 的缓存&#xff0c;一个…

Zebec生态进展迅速,频被BitFlow、Matryx DAO等蹭热度碰瓷

进入到 2023 年以来&#xff0c; Zebec 生态的整体发展突飞猛进&#xff0c;除了流支付协议 Zebec Protocol 不断通过收购来扩大自身流支付业务、与万事达等合作推出 Zebec Card 等在支付业务上&#xff0c;实现进展外&#xff0c;其社区驱动的Layer3 模块化链 Nautilus Chain …

css基础技巧

1. emmet语法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>…

koa2获取HTTP请求参数

HTTP 什么是HTTP HTTP&#xff0c;即超文本传输协议&#xff0c;是一种实现客户端和服务器之间通信的响应协议&#xff0c;它是用作客户端和服务器之间的请求。 客户端&#xff08;浏览器&#xff09;会向服务器提交HTTP请求&#xff1b;然后服务器向客户端返回响应&#xf…

ENSP安装教程【手把手教学】

安装ENSP 简介ENSP概述设备支持 首先需要的环境安装顺序 安装后的测试 简介 ENSP概述 eNSP(Enterprise Network Simulation Platform)是一款由华为提供的免费的、可扩展的、图形化的网络设备仿真平台&#xff0c;主要对企业网路由器、交换机、WLAN等设备进行软件仿真&#xf…