news 2026/7/30 12:46:37

LeetCode 2110.股票平滑下跌阶段的数目:数学(一次遍历)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 2110.股票平滑下跌阶段的数目:数学(一次遍历)

【LetMeFly】2110.股票平滑下跌阶段的数目:数学(一次遍历)

力扣题目链接:https://leetcode.cn/problems/number-of-smooth-descent-periods-of-a-stock/

给你一个整数数组prices,表示一支股票的历史每日股价,其中prices[i]是这支股票第i天的价格。

一个平滑下降的阶段定义为:对于连续一天或者多天,每日股价都比前一日股价恰好少1,这个阶段第一天的股价没有限制。

请你返回平滑下降阶段的数目。

示例 1:

输入:prices = [3,2,1,4]输出:7解释:总共有 7 个平滑下降阶段: [3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1] 注意,仅一天按照定义也是平滑下降阶段。

示例 2:

输入:prices = [8,6,7,7]输出:4解释:总共有 4 个连续平滑下降阶段:[8], [6], [7] 和 [7] 由于 8 - 6 ≠ 1 ,所以 [8,6] 不是平滑下降阶段。

示例 3:

输入:prices = [1]输出:1解释:总共有 1 个平滑下降阶段:[1]

提示:

  • 1 <= prices.length <= 105
  • 1 <= prices[i] <= 105

解题方法:遍历

假设有3 33连续下滑天[ 3 , 2 , 1 ] [3, 2, 1][3,2,1],那么可以有3 , 2 , 1 3, 2, 13,2,1(连续3天共1种)、3 , 2 3, 23,22 , 1 2, 12,1(连续2天共2种)、3 332 221 11(连续1天共3种)这共计1 + 2 + 3 = 3 ( 3 + 1 ) 2 = 6 1+2+3=\frac{3(3+1)}{2}=61+2+3=23(3+1)=6平滑下降阶段

同样的,n nn连续下滑天就有n ( n + 1 ) 2 \frac{n(n+1)}22n(n+1)平滑下降阶段

因此,我们只需要遍历一遍,看下原始数组中有多少连续下滑天,并将每个连续下滑天的平滑下降阶段种类数求和即可。

具体做法

具体而言,可以使用两个变量:l a s t lastlastc n t cntcnt分别记录上一天的价格和当前连续下滑天,遇到连续下滑天中断的情况就计算一次a n s ansans,最后返回前也计算一次a n s ansans

时空复杂度

  • 时间复杂度O ( l e n ( p r i c e s ) ) O(len(prices))O(len(prices))
  • 空间复杂度O ( 1 ) O(1)O(1)

AC代码

C++
/* * @LastEditTime: 2025-12-15 18:52:23 */typedeflonglongll;classSolution{public:llgetDescentPeriods(vector<int>&prices){ll ans=0,cnt=0;intlast=0;for(intt:prices){if(t!=last-1){ans+=cnt*(cnt+1)/2;// printf("t = %d, cnt = %lld\n", t, cnt);cnt=0;}last=t;cnt++;}returnans+cnt*(cnt+1)/2;}};
Python
''' LastEditTime: 2025-12-15 18:54:39 '''fromtypingimportListclassSolution:defgetDescentPeriods(self,prices:List[int])->int:ans=last=cnt=0forpinprices:ifp!=last-1:ans+=cnt*(cnt+1)//2cnt=0cnt+=1last=preturnans+cnt*(cnt+1)//2
Java
/* * @LastEditTime: 2025-12-15 21:37:22 */classSolution{publiclonggetDescentPeriods(int[]prices){longans=0,cnt=0;for(intlast=0,i=0;i<=prices.length;i++){if(i==prices.length||prices[i]!=last-1){ans+=cnt*(cnt+1)/2;cnt=0;}cnt++;if(i<prices.length){last=prices[i];}}returnans;}}
Go
/* * @LastEditTime: 2025-12-15 21:35:08 */packagemainfuncgetDescentPeriods(prices[]int)(ansint64){varcntint64last:=0fori:=0;i<=len(prices);i++{ifi==len(prices)||prices[i]!=last-1{ans+=cnt*(cnt+1)/2cnt=0}cnt++ifi<len(prices){last=prices[i]}}return}
Rust
/* * @LastEditTime: 2025-12-15 21:41:17 */implSolution{pubfnget_descent_periods(prices:Vec<i32>)->i64{letmutans:i64=0;letmutcnt:i64=0;letmutlast:i32=0;forpinprices{// 一借不还ifp!=last-1{ans+=cnt*(cnt+1)/2;cnt=0;}cnt+=1;last=p;}ans+cnt*(cnt+1)/2}}

End

今天跌得可不轻啊

The Real End, Thanks!

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 2:54:59

ComfyUI Manager界面按钮消失3步速效修复指南:从零到精通

ComfyUI Manager界面按钮消失3步速效修复指南&#xff1a;从零到精通 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager 亲爱的ComfyUI用户们&#xff0c;当您发现熟悉的Manager界面按钮突然消失时&#xff0c;是不是感到…

作者头像 李华
网站建设 2026/7/30 6:44:50

【一句话概述】前端性能优化从页面加载到展示

【一句话概述】前端性能优化从页面加载到展示 一句话总结&#xff1a; 优化本质是做减法&#xff08;减请求、减体积、减计算&#xff09;和做缓存&#xff08;存起来下次直接用&#xff09;。 可选方案 网络层面&#xff1a; 减少请求数&#xff1a;合并文件、雪碧图 → 减少T…

作者头像 李华
网站建设 2026/7/28 5:46:37

Windows驱动管理利器:Driver Store Explorer完全指南

Windows驱动管理利器&#xff1a;Driver Store Explorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾因驱动冲突导致硬件无法正常工作&#xff1f;是否苦恼于…

作者头像 李华
网站建设 2026/7/28 4:36:40

38、安全漏洞利用代码案例分析

安全漏洞利用代码案例分析 1. InlineEgg I 案例分析 1.1 概述 InlineEgg 是由 CORE SDI 的研究人员开发的,旨在为他们的产品套件实现一个动态且可扩展的漏洞利用框架。它可以为多个平台上的多个系统调用创建 shellcode,并且能在 Python 脚本中快速使用。其 shell 创建技术…

作者头像 李华
网站建设 2026/7/29 9:57:23

LaTeX学术报告模板:用于发表关于ACE-Step模型的研究成果

LaTeX学术报告模板&#xff1a;用于发表关于ACE-Step模型的研究成果 在AI生成内容浪潮席卷创意产业的今天&#xff0c;音乐创作正经历一场静默却深刻的变革。过去需要数年训练才能掌握的作曲技巧&#xff0c;如今通过一个文本提示或一段旋律输入&#xff0c;就能由算法自动生成…

作者头像 李华
网站建设 2026/7/30 11:06:01

3款必装VLC皮肤推荐:让你的播放器秒变专业影音中心的终极方案

还在为VLC播放器单调的界面发愁吗&#xff1f;每天面对相同的灰色调&#xff0c;观影体验大打折扣&#xff0c;工作学习时也容易产生视觉疲劳。VLC皮肤定制正是解决这一痛点的完美方案&#xff0c;通过界面重构让你的播放器焕然一新。 【免费下载链接】VeLoCity-Skin-for-VLC C…

作者头像 李华