【LeetCode: 845. 数组中的最长山脉 + 动态规划】

Leetcode题845、数组中的最长山脉(Python题解)笔试常见题 问题: 题目来源:力扣(LeetCode) leetcode845.数组中的最长山脉 难度:中等 分析: 复杂的题目往往只需要最朴素的解法。 山脉有两个坡,前坡和后坡,但只有一个山顶。 我们从前向后寻找上升数组,从后向前寻找上升数组,然后求取每个山顶位置的前坡和后坡长度之和,取最大值即可。 解决方法: 1:迭代 class Solution: def longestMountain(self, A: List[int]) -> int: if not A: return 0 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

把符合下列属性的数组 arr 称为 山脉数组 :

  • arr.length >= 3
  • 存在下标 i(0 < i < arr.length - 1),满足
    • arr[0] < arr[1] < … < arr[i - 1] < arr[i]
    • arr[i] > arr[i + 1] > … > arr[arr.length - 1]

给出一个整数数组 arr,返回最长山脉子数组的长度。如果不存在山脉子数组,返回 0 。

示例 1:

输入:arr = [2,1,4,7,3,2,5]
输出:5
解释:最长的山脉子数组是 [1,4,7,3,2],长度为 5。
示例 2:

输入:arr = [2,2,2]
输出:0
解释:不存在山脉子数组。

提示:

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

进阶:

你可以仅用一趟扫描解决此问题吗?
你可以用 O(1) 空间解决此问题吗?

🌟 求解思路&实现代码&运行结果


⚡ 动态规划

🥦 求解思路
  1. 边界处理:若数组为空,直接返回 0。
  2. 计算上升长度:遍历数组,计算每个位置的左侧连续上升长度并存入left数组。
  3. 计算下降长度:反向遍历数组,计算每个位置的右侧连续下降长度并存入right数组。
  4. 统计最长山脉:遍历数组,若某位置两侧均有长度,则计算山脉长度,取最大值。
  5. 返回结果:返回最长山脉长度。
  6. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {
    public int longestMountain(int[] arr) {
        if (arr == null)
            return 0;
        int n = arr.length;
        int[] left = new int[n], right = new int[n];
        for (int i = 1; i < n; i++) {
            left[i] = arr[i] > arr[i - 1] ? left[i - 1] + 1 : 0;
        }
        for (int i = n - 2; i >= 0; i--) {
            right[i] = arr[i] > arr[i + 1] ? right[i + 1] + 1 : 0;
        }
        int ans = 0;
        for (int i = 0; i < n; ++i) {
            if (left[i] > 0 && right[i] > 0) {
                ans = Math.max(ans, left[i] + right[i] + 1);
            }
        }
        return ans;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

【通过STM32CubeMx配置LWIP+FreeRTOS并通过Socket实现TCP_Client/Sever】 生成KEIL工程之后,勾选上use MicroLIB,代码上暂时无需做其他修改,编译下载。由于使用了FreeRTOS,因此系统的TimeBase Source修改成TIM1。在CubeMx上面选择NUCLEO-F429ZI开发板,并采用默认配置。打开电脑命令行,去ping这设置好的IP,能够实现Ping通。使能LWIP,并且先禁用DHCP,设置好静态IP。修改defaultTask的栈大小。Platform选择LAN8742。修改堆栈大小,生成工程。使能FreeRTOS。 阅读详情

相关推荐

【LeetCode: 680. 验证回文串 II + 贪心 + 边界处理】

【LeetCode: 680. 验证回文串 II + 贪心 + 边界处理】给你一个字符串 s,最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

Coder_ljw的博客 1135

【win10+RAGFlow+Ollama】搭建本地大模型助手(教程+源码)

在当今科技飞速发展的时代,人工智能(AI)已经成为各行各业不可或缺的一部分。特别是在文档处理和数据分析领域,AI的应用更是无处不在。今天,我要向大家介绍一个开源的AI框架引擎——RAGflow。它能够在深度文档理解方面执行检索增强生成(Retrieval-Augmented Generation,简称RAG),并且被认为是目前最优秀的RAG框架之一。本文将详细探讨RAGflow的创新功能、技术特点以及如何在实际应用中发挥其最大潜力。

Yooao的博客 9617

mysql必知必会样例表_《SQL必知必会》笔记1-样例表说明及建表语句

该笔记整理自Ben Forta著,钟鸣、刘晓霞译,人民邮电出版社出版的《SQL必知必会》第4版,具体内容有部分省略。关于存储过程的部分内容,结合了《SQL必知必会》和《MySQL必知必会》。代码测试环境:Win7-64bit、MySQL 5.7、MySQL Workbench 6.3。1 样例表解释说明书中所用的表是一个玩具经销商使用的订单录入系统的组成部分,包括:管理供应商Vendors。管理...

weixin_42467457的博客 2008

抖音视频数据获取实战:从API调用到热门内容挖掘

通过抖音API获取视频数据,企业可快速构建数据驱动的运营体系。本文提供了从权限申请到商业落地的全流程指南,建议结合自身业务扩展功能。如有技术问题,欢迎​​评论​​区留言讨论!#抖音开发 #数据挖掘 #短视频运营 #API调用 #Python实战。

WBKJ_Noah_的博客 6379

Xarray实战:从气象数据到可视化分析的完整流程(附Python代码)

本文详细介绍了使用Xarray库处理气象数据的完整实战流程。针对气象领域常见的NetCDF和GRIB格式,文章从数据读取、坐标操作、智能索引、统计计算到高级可视化,提供了完整的Python代码示例。重点阐述了Xarray如何高效处理高维标记数据,帮助地球科学领域的研究人员将繁琐的数据处理工作转化为高效的分析流水线。

d6e7f8g9h的博客 289

【前缀和】1456.定长子串中元音的最大数目

这个官方题解采用了滑动窗口的方法来解决问题。通过维护一个固定大小的窗口,我们可以在O(n)的时间复杂度内找到最长连续元音字符的子串。在实际编程中,可以根据具体需求对这个解法进行优化,例如在字符串中只包含元音字符的情况下,可以进一步优化时间复杂度。

进一步有一步的欢喜 408

b站up“麦辣翅翅”《YOLOv8修改损失函数》问题解决RuntimeError: The size of tensor a (4) must match the size of tensor

b站up“麦辣翅翅”《YOLOv8修改损失函数》问题解决RuntimeError: The size of tensor a (4) must match the size of tensor ;TypeError: bbox_iou() got an unexpected keyword argument 'xywh‘

weixin_68331871的博客 3020

2225 找出输掉零场或一场比赛的玩家(哈希表)

1. 问题描述: 给你一个整数数组 matches 其中 matches[i] = [winneri,loseri] 表示在一场比赛中 winneri 击败了 loseri 。返回一个长度为 2 的列表 answer : answer[0] 是所有没有输掉任何比赛的玩家列表。 answer[1] 是所有恰好输掉一场比赛的玩家列表。 两个列表中的值都应该按递增顺序返回。 注意: 只考虑那些参与至少一场比赛的玩家。 生成的测试用例保证不存在两场比赛结果相同 。 示例 1: 输入:matches = [[.

二哈 969

系统安装(kuntaiR522 kvm安装)

鲲泰R522服务器kvm安装rocky

weixin_46396917的博客 1818

MATLAB代码实现了船舶航线优化的功能,使用混合遗传算法(结合模拟退火算法)来寻找从大连港到格拉斯通港的最优航线,同时考虑了船舶的参数、气象数据(风速、风向、有效波高、波浪阻力系数等)对航行的影响

这段MATLAB代码主要实现了船舶航线优化的功能,使用混合遗传算法(结合模拟退火算法)来寻找从大连港到格拉斯通港的最优航线,同时考虑了船舶的参数、气象数据(风速、风向、有效波高、波浪阻力系数等)对航行的影响。通过以上步骤,该代码能够找到一条在考虑船舶性能和气象条件下,从大连港到格拉斯通港的较优航线,最小化燃油消耗和航行时间的加权和。

AI的内部世界的博客 512

牛客NC406#最长山脉#Java版#一次循环搞定#代码性能O(n)

牛客NC406#最长山脉#Java版#一次循环搞定#代码性能O(n)

个人程序员-猴嗨哦-的博客 616

YOLOv11改进策略【Head】| AFPN渐进式自适应特征金字塔,增加针对小目标的检测头(附模块详解和完整配置步骤)

一、本文介绍 本文利用AFPN对YOLOv11的网络模型进行优化提升。AFPN采用渐近式融合及自适应空间融合操作。通过渐近式架构,逐步整合不同层级特征,有效避免非相邻层级间因语义差距过大导致的信息丢失或降级问题,确保在多尺度特征融合过程中既能保留高层语义信息,又能融入低层细节特征。本文将AFPN应用于YOLOv11中,并配置了针对小目标的检测头,能显著增强模型对不同尺度目标的检测能力,使其在复杂场景下更聚焦于目标物体特征,减少背景等无关信息的影响。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、

Limiiiing的博客 2717

【Leetcode 每日一题】845. 数组中的最长山脉(动态规划预处理,求最长上升和最长下降和的最大值)

Leetcode 每日一题 题目链接: 845. 数组中的最长山脉 解题思路: DP求出输入数组的正序的最长上升序列数组和逆序最长上升数组(最长下降)。对于相同位置的正序的最长上升序列和逆序最长上升之和,选择最大的即为最长的山脉。 题解: class Solution: # 求最长上升子序列 def LIS(self, A: List[int]) -> List[int]: # print(A) lena = len(A) dp = [0]

YancyKahn 360

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

leetcode845(数组中的最长山脉:动态规划)

我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”: B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] < B[1] < … B[i-1] < B[i] > B[i+1] > … > B[B.length - 1] (注意:B 可以是 A 的任意子数组,包括整个数组 A。) 给出一个整数数组 A,返回最长 “山脉” 的长度。 如果不含有 “山脉” 则返回 0。 示例 : 输入:[2,1,4,7,3

CY2333333的博客 300

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

力扣--动态规划845.数组中最长的山脉

【代码】力扣--动态规划845.数组中最长的山脉。

weixin_73865269的博客 437

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

每日一道Leetcode - 845. 数组中的最长山脉 【动态规划】

class Solution { public int longestMountain(int[] arr) { if(arr.length<3) return 0; // 最初思路: //找到一个数使左边都小于它右边都大于它? // 锚点左边的数:左边都小于它,右边都大于它 // 锚点右边的数:左边都大于它,右边都小于它 // 锚点:大于左右两边的数字 // 找这样数字的边界,计.

weixin_41041275的博客 217

动态规划—leetcode 每日一题845.数组中的最长山脉

题目: 思路: 动态规划。 dp1[i]: 以a[i]为结尾元素的 从左到右的最长连续递增数组的长度 dp2[i]: 以a[i]为结尾元素的 从右到左的最长连续递增数组的长度 则所求即为 max(dp1[i]+dp2[i]-1) ,其中0<i<n-1 解答: class Solution: def longestMountain(self, A: List[int]) -> int: n=len(A) if n<3:

jqq125的博客 212

leetcode845. 数组中的最长山脉

文章目录题目:845. 数组中的最长山脉基本思想:枚举山顶 题目:845. 数组中的最长山脉 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”: B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] < B[1] < … B[i-1] < B[i] > B[i+1] > … > B[B.length - 1] (注意:B 可以是 A 的任意子数组,包括整个数组 A。) 给出一个整数数组 A,返回

yyf_blog 480

Leetcode刷题笔记 845. 数组中的最长山脉

845. 数组中的最长山脉 知识点:动态规划 时间:2020年10月25日 题目链接:https://leetcode-cn.com/problems/longest-mountain-in-array/ 题目 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”: B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] < B[1] < … B[i-1] < B[i] > B[i+1] > … > B[

cjl的博客 258

LeetCode 每日一题 845.数组中的最长山脉

10.25 LeetCode 每日一题 845.数组中的最长山脉 方法一:从山顶进行枚举 思路分析:题目所要求的山脉的形式就是相当于“金字塔型”,山顶的左边和右边都依次变低,但是这个金字塔并不是左右对称的,只需要保证山顶的左边和右边依次递减即可。所以我们可以从山顶出发,求出以每一个点为山顶,能够组成的最长山脉,最后返回这个最长山脉的长度即可。 假设给出的数组长度为len,这个时候,因为山顶不能没有左边和右边,所以山顶从1开始枚举,枚举到len-1。这样子求出每一个山脉的长度。因为左边和右边都必须满足依次递

JavaBoy 556

LeetCode845 数组中的最长山脉

LeetCode845 数组中的最长山脉 1. 问题描述 2. 思路 中心扩张:先找到比左右两侧大的数 然后以这个数为中心 依次找到左右的长度 3. 代码 func longestMountain(arr []int) int { var res int if arr == nil || len(arr) <= 2 { return res } for i := 1; i < len(arr) - 1; i++ { if arr

菜到不敢run 122

动态规划 | 题目:845. 数组中的最长山脉 python

【代码】题目:845. 数组中的最长山脉 python。

Lchiyu的博客 248

LeetCode刷题笔记- 845.数组中的最长山脉

LeetCode刷题笔记- 845.数组中的最长山脉C语言思想注意点结果 C语言 struct mount_st { int up; int down; int is_mountain; }; #define MAX_ONE(a,b) ((a)>(b)?(a):(b)) int copy(struct mount_st *dst, struct mount_st *src) { memcpy(dst, src, sizeof(struct mount_st));

sz66cm 学习随笔 741

LIS最长上升子序列总结

07-28 LIS 最长上升子序列总结LeetCode 300. 最长上升子序列LeetCode 128. 最长连续序列LeetCode 845. 数组中的最长山脉解题思路 为了让自己更好的记住学过的知识,我要写博客,将做题中用到的一些方法和一类问题进行总结。 今天做题,碰到了一题关于最长上升子序列的题目,先上题 牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必...

qq_28126017的博客 364

[Leetcode] 845. Longest Mountain in Array (Python)

@[TOC]([Leetcode] 845. Longest Mountain in Array (Python)) 题目大意 先up再down找序列中最长山脉的长度。 Let’s call any (contiguous) subarray B (of A) a mountain if the following properties hold: B.length >= 3 There exists some 0 < i < B.length - 1 such that B[0] &lt

TwinkleZhao的博客 314
上一篇: 【LeetCode: 142. 环形链表 II + 链表】
下一篇: 【LeetCode: 237. 删除链表中的节点 + 脑筋急转弯 + 链表】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值