leetcode 413. 等差数列划分

使用VNA(Vector Network Analyzer)对S参数进行去嵌(一) 传统上,RF和微波组件被设计成具有同轴接口的封装。通过连接一系列这些单独的同轴设备,可以容易地制造复杂的系统。使用使用类似同轴接口的标准测试设备可以很容易地测量这些部件和系统的性能。然而,现代系统需要更高水平的组件集成、更低的功耗和更低的制造成本。射频组件正在迅速从使用昂贵同轴接口的设计转向使用印刷电路板和表面贴装技术(SMT)的设计。传统的同轴接口甚至可以从最终产品中取消。这就给设计者留下了用需要同轴接口的测试设备测量这些射频和微波组件性能的问题。解决方案是使用连接同轴和非同轴传输线的测试夹具。 阅读详情

https://leetcode-cn.com/problems/arithmetic-slices/

 动态规划,dp[i]的含义是以nums[i]结尾的等差数列的个数

则假设nums.size() == 6的话,那么所有的等差字数个数就等于以nums[2] nums[3] nums[4] nums[5]为结尾的等差子数列的个数求和。

比如 nums = [1, 2, 3, 4, 5, 6]

则以nums[2] = 3结尾的等差数列个数dp[2] = 1,即 1 2 3

以nums[3] = 4结尾的等差数列的个数dp[3] = dp[2] + 1 = 2,即 2 3 4 和1 2 3 4,所以为什么当新的nums[i]能与其前两两个数都成等差数列的时候,则以nums[i]结尾的等差子数列个数比以nums[i -1]结尾的等差子数列的个数多1呢?因为nums[i]能与前边两个数构成等差数列,则对于所有以

nums[i - 1]结尾的等差数列而言,在其后边接上一个nums[i],即nums[i - 1] 结尾的所有等差数列都一一对应了一个长度加了1的以nums[i]结尾的等差数列,而nums[i]结尾比nums[i-1]结尾多出来的那个等差数列是 nums[i] nums[i - 1] nums[i - 2], 因为这个数列,在nums[i - 2]结尾的数列中是没有对应的,因为规定了等差数列长度不小于3. 因此在nums[i - 1]结尾的数列中只有两个元素是构不成等差数列的。

class Solution {
public:
    int numberOfArithmeticSlices(vector<int>& nums) {
        // dp[i]的含义是以nums[i]结尾的等差子数列的个数
        /*
        比如nums = [1, 2, 3, 4, 5]
        那么以3结尾的等差数列个数dp[2] = 1 即 1 2 3
        以4结尾的等差数列个数 dp[3] = 2, 即 2 3 4   1 2 3 4
        然后把所有dp[i]累加起来就是所有的等差子数组
        */
        int len = nums.size();
        if(len < 3) return 0;
        // 开状态数组
        vector<int> dp(len);
        dp[0] = 0; // 这里其实不用,前边dp已经默认值 初始化了
        dp[1] = 0;
        int ans = 0;
        for(int i = 2; i < len; ++i){
            if(nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]){
                dp[i] = dp[i - 1] + 1;
                ans += dp[i];
            }
        }
        return ans;

    }
};

上边动态规划开了个数组,但实际上也可以不用,只要每个等差子序列的时候把所有的dp累加起来,当遇到一个给等差的元素的时候,将dp归零即可。

class Solution {
public:
    int numberOfArithmeticSlices(vector<int>& nums) {
        // dp[i]的含义是以nums[i]结尾的等差子数列的个数
        /*
        比如nums = [1, 2, 3, 4, 5]
        那么以3结尾的等差数列个数dp[2] = 1 即 1 2 3
        以4结尾的等差数列个数 dp[3] = 2, 即 2 3 4   1 2 3 4
        然后把所有dp[i]累加起来就是所有的等差子数组
        */
        int len = nums.size();
        if(len < 3) return 0;
        // 开状态数组
        // vector<int> dp(len);
        // dp[0] = 0; // 这里其实不用,前边dp已经默认值 初始化了
        // dp[1] = 0;
        int dp = 0;
        int ans = 0;
        for(int i = 2; i < len; ++i){
            if(nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]){
                dp = dp + 1;
                ans += dp;
            }else{
                dp = 0;
            }
        }
        return ans;

    }
};

C#【必备技能篇】Winform实现多语言切换(.resx文件的应用) 在实际的项目开发中,软件需要实现多语言切换。本文通过一个实际的例子,可以让你学习到这个技能。 阅读详情

相关推荐

ESP32连接OneNet云平台实现多设备联动控制完整示例

通过esp32连接onenet云平台,实现远程设备间的智能联动控制,利用MQTT协议完成数据通信,esp32连接onenet云平台后可高效稳定地上传与下发指令,提升物联网系统响应速度与自动化水平。

weixin_42360733的博客 547

leetcode: 缺失数字(scala,考察点:等差数列求和)

题目 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现? 思考 利用数学的思路,将没有缺失数字的序列利用等差数列求和公式计算出总和...

从一点一滴做起 500

大疆M3508电机使用CAN通信进行速度PID闭环控制详解

目录一. 简介二. 电机通信协议三. 电机PID控制原理四. 官方代码移植-中断接收五. 官方代码移植-查询接收 一. 简介 之前写过一篇文章STM32实现四驱小车(五)电机控制任务——电机速度PID控制算法,其中是以大疆的M3508电机为例进行讲解的(没错,就是RoboMaster机器人同款电机,不过Robomaster上的电机好像是小一号的M2006)。不少小伙伴私信问我要代码,我都回复说不是有官方demo么。后来问的人多了我大概明白了,看来官方的Demo还是有点门槛。可能是带FreeRTOS操作系统看

qq_30267617的博客 7万+

leetcode 441. Arranging Coins 等差数列求和

You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins. Given n, find the total number of full staircase rows that can be formed. n is

JackZhangNJU的专栏 472

Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)

目录 一、Java的打印简介 二、Java打印实现 2.1 JPG图片文件格式打印实现 2.2 PDF文件格式打印实现 2.3 Word文件格式打印实现 2.3.1 Word文件采用jacob插件进行打印实现。 2.3.2 先将word转化为pdf文件,然后打印pdf(lz使用) 三、总结 一、Java的打印简介 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Jav...

vatxiongxiaohui的专栏 8万+

智能车竞赛新手必看:用AD21从零画一块英飞凌TC264核心板(附开源PCB文件)

本文详细介绍了使用Altium Designer 21(AD21)从零开始设计英飞凌TC264核心板的完整流程,涵盖原理图绘制、PCB布线到最终DRC检查的全过程。针对智能车竞赛新手,提供了实用的硬件设计技巧和开源PCB文件,帮助快速掌握TC264核心板开发。

weixin_27017211的博客 246

leetcode 268. Missing Number 等差数列求和 + 位操作

Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array. For example, Given nums = [0, 1, 3] return 2. Note: Your algorithm should run in

JackZhangNJU的专栏 466

黑苹果从入门到精通:最详细的VMware安装macOS教程

前言 不知为何,以前我发的两篇关于黑苹果的文章或没过审或被删除,最近SMZDM上有不少优质的黑苹果文章发出来,貌似禁令已开,前段时间在一篇写的很不错的黑果文章下吹牛说今年要写一个系列,故有了这篇文章作为系列的开头。 系列的名字起的有点俗,叫做xxx从入门到精通,但是我很喜欢,相信过半的黑果群众都是程序员,作为教程来说这个名字俗但是好用,我也希望这个系列能像其它入门到精通系列一样,让大家学到东西...

La victoria的博客 14万+

LeetCode 剑指offer64 、等差数列的应用

声明:尊重他人劳动成果,转载请附带原文链接!学习交流,仅供参考! 题目 求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 注意: 1 <= n <= 10000 示例1: 输入: n = 3 输出: 6 示例2: 输入: n = 9 输出: 45 思路分析 这里可以利用数学中的等差数列的求和公式计算出结果! 公式: Sn=n*(a1+an)/2 判断等于0,因为 1 <= n &lt.

一直AC丶 166

计算机三级考试嵌入式系统重点精简汇总

第一章 嵌入式系统概论 1.1.1嵌入式系统 (1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。 (2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。 1.1.2嵌入式系统组成与分类 (1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线; (2)处理器:分为主处理器(CPU)和协处

chemkrik的博客 1万+

【100分】最长子字符串的长度

题目要求在一个环形字符串中找出字符 ‘o’ 出现了偶数次的最长子字符串长度。这里的字符串是一个环形的,即首尾相连。代码统计了字符串中字符 ‘o’ 的出现次数,并根据其奇偶性返回相应的最长子字符串长度。当 ‘o’ 的数量为偶数时,直接返回字符串长度;当 ‘o’ 的数量为奇数时,返回长度减去 1。给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。【最长子字符串的长度】

weixin_54707168的博客 896

LeetCode 1925. 统计平方和三元组的数目

文章目录1. 题目2. 解题 1. 题目 一个 平方和三元组 (a,b,c) 指的是满足 a2+b2=c2a^2 + b^2 = c^2a2+b2=c2 的 整数 三元组 a,b 和 c 。 给你一个整数 n ,请你返回满足 1 <= a, b, c <= n 的 平方和三元组 的数目。 示例 1: 输入:n = 5 输出:2 解释:平方和三元组为 (3,4,5) 和 (4,3,5) 。 示例 2: 输入:n = 10 输出:4 解释:平方和三元组为 (3,4,5),(4,3,5),(6,8,

Michael是个半路程序员 913

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

leetcode413. 等差数列划分

传送门 题目:如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 以下数列不是等差数列。 1, 1, 2, 5, 7 函数要返回数组 A 中所有为等差数组的子数组个数。 A = [1, 2, 3, 4] 返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。 方法1.滑动窗口 滑动窗口用len动态表示窗口l

lonelyVM的博客 322

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

leetcode-413. 等差数列划分(java)

具体的,我们可以枚举 i 作为差值为 d 的子数组的左端点,然后通过「双指针」的方式找到当前等差并最长的子数组的右端点 j,令区间 [i,j]长度为 len。因此上述结果 cnt其实是一个 首项为 1,末项为 len−3+1,公差为 1 的等差数列的求和结果。解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。输入:nums = [1,2,3,4]

SP_1024的博客 879

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Leetcode413. 等差数列划分(C语言)

Leetcode413. 等差数列划分(C语言) 算法-动态规划:算法与数据结构参考 题目: 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例: 输入:[1,2,3,4] 输出:3 思路: 动态规划。计算后面的差值与第一个差值作比较,若相等,dp计数;用count累加计算出所有的等差数列数值(连续)。 代码: int numberOfArithmeticSlice...

jeanlu的博客 563

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Leetcode 413. 等差数列划分 C++

Leetcode 413. 等差数列划分 题目 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 以下数列不是等差数列。 1, 1, 2, 5, 7 数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。 如果满足以下条件,则称子数组(P, Q)为等差数组: 元素 A[

weixin_43750513的博客 526

Leetcode 413 等差数列划分

Leetcode 413 等差数列划分 问题重述 A = [1, 2, 3, 4] 返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。 思路 因为等差子数组可以在任意位置结束,根据规律,三个元素一个组合;四个元素三个组合;五个元素六个组合;六个元素十个组合;所以我们发现1+2+3+4=10。 所以我们发现一个等差元素,就dp[i] = dp[i-1] + 1.最后将dp数组求和就可以。 判断用A[i] - A[i-1] == A[i-1]

UPC YR的博客 285

【动态规划】leetcode.413 等差数列划分

一道非常经典的划分型动态规划,值得一写

weixin_51574797的博客 170

LeetCode刷题-413. 等差数列划分

难度:中等⭐️⭐️⭐️⭐️。

快乐的小小程序猿 232

Java实现 LeetCode 413 等差数列划分

413. 等差数列划分 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 以下数列不是等差数列。 1, 1, 2, 5, 7 数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P&l...

南 墙 1万+

力扣413-等差数列划分-numberOfArithmeticSlices-Java

如果一个数列至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。给你一个整数数组 nums,返回数组 nums 中所有为等差数组的 子数组个数。子数组是数组中的一个连续序列。...

weixin_43770899的博客 473

LeetCode413:等差数列划分

LeetCode413:等差数列划分 动态规划 文章目录LeetCode413:等差数列划分题目解题思路代码实现总结 题目 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。 子数组 是数组中的一个连续序列。 示例 1: 输入:nums = [1,2,3,4] 输出:3 解释:nums 中

qq_45711100的博客 460

413.等差数列划分(力扣leetcode) 博主可答疑该问题

一、笔记部分 思路: 1、暴力求解(每对元素的之差是否相等,相等就记录下来,记住区间,然后继续下一对检验) 2.动态规划: 其中递归数列的个数与一个大整体是一个递归数列是有关系的 1 2 3 4 6 那么 1 2 3 4是的,其中有 123 234 1234都是递归dp(i)=1+dp(i-1) 每到一个数,那么就会多出一个结果,因为每多出一个数,就会与前面的等差数列组成一个等差数列,所以前面有几个等差数列就会组成几个相等长度的,然后在加上一个最长长度的那个, ...

qq_40262372的博客 293

leetcode413. 等差数列划分(动态规划)

数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。 如果满足以下条件,则称子数组(P, Q)为等差数组: 元素 A[P], A[p + 1], …, A[Q - 1], A[Q] 是等差的。并且 P + 1 < Q 。 函数要返回数组 A 中所有为等差数组的子数组个数。 代码 class Solution { public int numberOfArithmeticSlices(int[]

weixin_44560620的博客 283

LeetCode 413 - 等差数列划分

这道题看起来名字有点抽象,其实本质上是在找数组中“连续且公差一致”的子数组数量。换句话说,我们要找出所有长度≥3、且相邻元素差相同的子数组。 虽然听起来像是数学题,但实现上其实是一个动态规划(DP)+ 连续计数的过程。 本文会带你从实际开发的角度去理解这个问题,结合 Swift 代码一步步拆解逻辑,让你对动态规划类题目不再害怕。

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 1154
上一篇: leetcode 64. 矩阵最小路径和
下一篇: leetcode 1605. 给定行和列的和求可行矩阵
罗古洞的女婿
博客等级 码龄10年 1117粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值