leetcode刷题记录:[2110]股票平滑下跌阶段的数目

【算法系列总结之分组循环篇】 阅读详情

题目:
题目

思路:
统计数组 prices 以每一天为结尾的平滑下降阶段的数目,这些数目之和即为数组中平滑下降阶段的总数。

如果 prices[i]=prices[i−1]−1,那么第 i 天无法与第 i−1 天构成平滑下跌阶段,因此以 i 结尾的平滑下跌阶段只有 i 本身,因此 dp[i]=1;如果 prices[i]=prices[i−1]−1,那么不仅第 i 天自身可以构成平滑下跌的阶段,任何以第 i−1 天结尾的平滑下跌阶段都可以加上 i 构成新的以第 i 天结尾的平滑下跌阶段。根据 dp 数组的定义,后者共 dp[i−1] 个,因此此时 dp[i]=dp[i−1]+1。

那么就可以得到以下公式:
在这里插入图片描述

具体代码如下:

class Solution {
    public long getDescentPeriods(int[] prices) {
        int pricesL = prices.length;
        if ( pricesL == 0 || pricesL == 1){
            return pricesL;
        }
        // 平滑下降阶段总数
        long res = 1;
        // 上一元素为结尾的平滑阶段的总数
        int prev = 1;
        for (int i = 1; i < pricesL; ++i) {
            if (prices[i] == prices[i-1] -1){
                ++prev;
            }else {
                prev = 1;
            }
            res += prev;
        }
        return res;
    }
}

总结:

才开始刷力扣,最开始的想法还是暴力解法,定义一个步数要判断循环判断每组元素是否平滑下降阶段。最后看solution才恍然大悟这种依赖上一阶段或元素的动态规划问题,最重要的是找到式子,再写代码。任重而道远啊。

【数据结构与算法】之深入解析“股票平滑下跌阶段的数目”的求解思路与算法示例 一、题目要求 给你一个整数数组 prices ,表示一支股票的历史每日股价,其中 prices[i] 是这支股票第 i 天的价格。 一个平滑下降的阶段定义为:对于连续一天或者多天 ,每日股价都比前一日股价恰好少 1 ,这个阶段第一天的股价没有限制。 请你返回平滑下降阶段的数目。 示例 1: 输入:prices = [3,2,1,4] 输出:7 解释:总共有 7 个平滑下降阶段: [3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1] 注意,仅一天按照定义也是平滑下降阶段。 阅读详情

相关推荐

主成分分析(PCA)和局部线性嵌入(LEE)原理详解

从KNN谈“维度灾难”,介绍线性降维PCA和局部线性嵌入LLE 这两种降维方法的原理

superzzx0920的博客 5616

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

LeetCode 2110.股票平滑下跌阶段的数目:数学(一次遍历) 给你一个整数数组 prices ,表示一支股票的历史每日股价,其中 prices[i] 是这支股票第 i 天的价格。 一个 平滑下降的阶段 定义为:对于 连续一天或者多天 ,每日股价都比 前一日股价恰好少 1 ,这个阶段第一天的股价没有限制。 请你返回 平滑下降阶段 的数目。

<font color="Pink">Tisfy的博客</font> 997

手把手教你学Simulink--双足机器人分数阶PID控制仿真

分数阶PID(Fractional-order PID, FOPID)控制是一种先进的控制策略,它扩展了传统的整数阶PID控制器的概念。FOPID控制器允许积分和微分项的阶次不是严格的整数,而是可以是任意实数,这为系统提供了更多的设计自由度,并可能带来更好的性能。在双足机器人控制中,分数阶PID控制可以用于改善机器人的平衡控制、轨迹跟踪等任务的性能。下面我们将详细介绍如何使用Simulink进行基于分数阶PID控制方法的双足机器人仿真研究。

MHD0815的博客 880

力扣2110股票平滑下跌阶段的数目

本题通过遍历股价数组,结合简单的条件判断,能够高效地计算出所有平滑下降阶段的数量。这个问题考察了对连续子序列的处理能力,尤其是如何利用状态变量来跟踪并累积符合条件的子序列数量。

qq_17405059的博客 640

Colab虚拟环境配置全攻略:从安装到实战应用

本文详细介绍了在Google Colab中配置Python虚拟环境的完整流程与实战技巧。通过安装Anaconda、创建独立环境、解决常见错误及结合深度学习项目应用,帮助用户有效管理依赖、避免冲突,并利用环境持久化策略提升在Colab中的开发效率与项目可复现性。

weixin_29204121的博客 340

Android功耗系列专题理论之十三:MTK平台待机功耗问题分析方法

摘要:本文详细分析了MTK平台待机功耗问题的调试方法,重点介绍了SPM电源管理机制、26M时钟控制逻辑以及系统深睡眠状态的判断标准。文章提供了完整的Debug流程,包括日志抓取、唤醒源分析、SCP睡眠状态检查以及时钟/LDO状态排查等实用技巧,并给出硬件漏电点和软件配置异常的排查方案。针对不同模块(Modem/Conn/SSPM等)提供了具体的电源管理绕过命令,适用于功耗问题调试和低功耗模式验证场景。

559

LeetCode 2110. 股票平滑下跌阶段的数目

数学题 、 等差数列

英雄哪里出来 560

18-XLINX的XC7A100T的BANK0引脚说明

DXP_0和 DXN_0是纯输入引脚,Xilinx Artix-7 FPGA 内部集成的一个片上监控模数转换器​ 的差分模拟输入对,模数转换器​的模拟信号输入端,将外部的模拟电压​ 采样并转换为内部的数字值,是一个单向的信号采集过程。它是与 VCCADC配对的关键引脚,共同为内部的精密模数转换器提供一个纯净、安静、独立的参考地平面。多FPGA同步配置: 在多FPGA系统中,主FPGA配置完成后,可以拉低从FPGA的 INIT_B使其等待,等所有FPGA都准备好后,再同时释放,实现同步启动。

weixin_44479192的博客 232

LeetCode 每日一题笔记 日期:2025.12.15 题目:2110.股票平滑下跌阶段的数目

本题的核心是识别「连续平滑下降序列」的贡献规律,无论是直接计算连续段的额外贡献,还是用动态规划累加每个位置的阶段数,本质都是对「1+2+…+(k-1)」这一数学规律的应用。

sheeta1998的博客 977

198、影像系统设计评审流程:从需求评审到 EVT、DVT、PVT 各阶段的关注重点

本文详细介绍了影像系统从需求评审到EVT、DVT、PVT各阶段的设计评审流程及关键点。作者通过实际案例(如IMX766模组偏紫问题)强调硬件工艺的重要性,指出影像系统是功能定义与物理实现的反复拉锯过程。文章分阶段解析:需求评审需将模糊需求转化为物理参数;架构评审要明确接口定义和时序约束;EVT阶段重点关注模组一致性和基础链路;DVT阶段需平衡算法调优与硬件验证;PVT阶段则以量产一致性为核心。最后提出建立"边界条件确认表"和"健康度看板"等实用建议,强调工程师需具备从表象追溯硬件根源的物理直觉。全文贯穿实战

sundong_81的博客 218

LeetCode 2110. 股票平滑下跌阶段的数目(滑动窗口)

文章目录1. 题目2. 解题 1. 题目 给你一个整数数组 prices ,表示一支股票的历史每日股价,其中 prices[i] 是这支股票第 i 天的价格。 一个 平滑下降的阶段 定义为:对于 连续一天或者多天 ,每日股价都比 前一日股价恰好少 1 ,这个阶段第一天的股价没有限制。 请你返回 平滑下降阶段 的数目。 示例 1: 输入:prices = [3,2,1,4] 输出:7 解释:总共有 7 个平滑下降阶段: [3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1] 注意

Michael是个半路程序员 1055

OWASP-ZAP扫描器的使用

目录 OWASP-ZAP 更新 代理 目录扫描 主动扫描(Active Scan) 扫描结果 生成报告 OWASP-ZAP OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者积极维护。它可以帮助你在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。 也可以说ZAP是一个中间人代理。它能够获取你对Web应用程序发出的所有请求以...

谢公子的博客 2万+

LeetCode 2110.股票平滑下跌阶段的数目

一个 平滑下降的阶段 定义为:对于 连续一天或者多天 ,每日股价都比 前一日股价恰好少 1 ,这个阶段第一天的股价没有限制。[3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1]解释:总共有 4 个连续平滑下降阶段:[8], [6], [7] 和 [7]由于 8 - 6 ≠ 1 ,所以 [8,6] 不是平滑下降阶段。输入:prices = [3,2,1,4]输入:prices = [8,6,7,7]解释:总共有 1 个平滑下降阶段:[1]输入:prices = [1]

tus00000的博客 273

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode:2110. 股票平滑下跌阶段的数目(数学 Java)

简单模拟一下就可以,[3,2,1,4]连续下降次数,1,2,3,1;起始含义就是以下标i结尾的元素可以组合的答案数,加起来就对了。因为从下标1开始遍历的,所以少算一个1,最后res + 1即为正确答案。

Cosmoshhhyyy的博客 354

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

leetcode2110. 股票平滑下跌阶段的数目

3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1]总共有 4 个连续平滑下降阶段:[8], [6], [7] 和 [7]由于 8 - 6 ≠ 1 ,所以 [8,6] 不是平滑下降阶段。,表示一支股票的历史每日股价,其中。注意,仅一天按照定义也是平滑下降阶段。,这个阶段第一天的股价没有限制。总共有 1 个平滑下降阶段:[1]

Turboyiyi的博客 258

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

A.每日一题——2110.股票平滑下跌阶段的数目

A.每日一题——2110.股票平滑下跌阶段的数目 解析

要努力去发光,而不是被照亮~ 199

Leetcode 2110:股票平滑下跌的数目

题目描述 给你一个整数数组prices,表示一支股票的历史每日股价,其中prices[i]是这支股票第i天的价格。 一个 平滑下降的阶段定义为:对于连续一天或者多天,每日股价都比 前一日股价恰好少 1,这个阶段第一天的股价没有限制。 请你返回 平滑下降阶段的数目。 示例 1: 输入:prices = [3,2,1,4] 输出:7 解释:总共有 7 个平滑下降阶段: [3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1] 注意,仅一天按照定义也...

weixin_35338624的博客 244

LeetCode - 股票平滑下跌阶段的数目(分组循环)

股票平滑下跌阶段的数目

weixin_73888239的博客 352

leetcode 2110. 股票平滑下跌阶段的数目 中等

3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1]总共有 4 个连续平滑下降阶段:[8], [6], [7] 和 [7]由于 8 - 6 ≠ 1 ,所以 [8,6] 不是平滑下降阶段。,表示一支股票的历史每日股价,其中。注意,仅一天按照定义也是平滑下降阶段。,这个阶段第一天的股价没有限制。总共有 1 个平滑下降阶段:[1]

2401_88085478的博客 255

LeetCode 2110. 股票平滑下跌阶段的数目(模拟、数学、数组)

【代码】LeetCode 2110. 股票平滑下跌阶段的数目(模拟、数学、数组)

记录一些刷过的题并分享学习心得 249

【Daily Code】leetcode 2110.股票平滑下跌阶段的数目

【代码】【DailyCode】leetcode2110.股票平滑下跌阶段的数目。

2201_76119663的博客 32

leetcode 2110

思路:在遍历 prices 的同时,统计当前这段连续递减的长度 last_d。2110: 股票平滑下跌阶段的数目。

2301_77892984的博客 254

[失业前端恶补算法]JavaScript leetcode刷题笔记 2110. 股票平滑下跌阶段的数目

JavaScript leetcode刷题笔记 2110. 股票平滑下跌阶段的数目

weixin_46463785的博客 556

力扣9.2

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。树的层次遍历,每次返回那一层最边上的元素,可以使用两个。给定一个二叉树的 根节点。

qq_40052678的博客 387

等差数列题目合集

等差数列的定义是:至少三个元素,且任意两个相邻元素的差相同。公差为1 等差求和 s=n*(n+1)/2.

weixin_65829986的博客 306
上一篇: FCN(Fully Convolutional Networks for Semantic Segmentation)全文翻译
下一篇: leetcode刷题记录:[2095]删除链表的中间节点
人还未醒
博客等级 码龄9年 7粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值