想要精通算法和SQL的成长之路 - 最长等差数列
想要精通算法和SQL的成长之路 - 最长等差数列
- 前言
- 一. 最长等差数列
前言
想要精通算法和SQL的成长之路 - 系列导航
一. 最长等差数列
原题链接


思路:
- 我们假设
dp[i][j]为:以num[i]为结尾,以j为公差的最长等差子序列的长度。由此可知,我们的代码存在2个循环。 - 外层循环,针对
nums的每一个元素(下标为i),将其视为最长等差子序列的结尾元素。 - 内层循环,针对
[0,i)这个范围的元素,求得每种公差的最长等差子序列长度。此时二层循环下标索引为k,计算出每个元素和当前num[i]之间的公差:j。 - 即有:
dp[i][j] = Max(dp[i][j], dp[k][j] + 1)。 - 同时我们用一个全局变量res,不断地更新它的最大值即可。
res = Math.max(res, dp[i][j]);
注意的点:
- 考虑到公差为负数的情况,那么结合题目本身,我们可以发现公差的范围是
[-500,500],为了避免下标越界,我们统一把公差的值转为正数。即公差统一加上500,那么范围是[0,1000]。我们就可以初始化动态规划数组:int[][] dp = new int[nums.length][1001]; - 如果我们没有给数组的所有可能初始化为1(单个元素自身也可成为一个子数组,长度为1),我们只需要返回结果+1即可。
最终代码如下:
public class Test1027 {public int longestArithSeqLength(int[] nums) {int res = Integer.MIN_VALUE;int[][] dp = new int[nums.length][1001];for (int i = 1; i < nums.length; i++) {for (int k = 0; k < i; k++) {// 公差统一+500int j = nums[i] - nums[k] + 500;// 更新[0,i) 中,所有以 j 为公差 的最长子序列长度,同时更新dp[i][j]dp[i][j] = Math.max(dp[i][j], dp[k][j] + 1);// 更新最大值res = Math.max(res, dp[i][j]);}}return res + 1;}
}
相关文章:
想要精通算法和SQL的成长之路 - 最长等差数列
想要精通算法和SQL的成长之路 - 最长等差数列 前言一. 最长等差数列 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 最长等差数列 原题链接 思路: 我们假设dp[i][j] 为:以num[i]为结尾,以j为公差的最长等差子序列的长度。由此可知&a…...
【简单的自动曝光】python实现-附ChatGPT解析
1.题目 一个图像有 n 个像素点,存储在一个长度为 n 的数组 img 里, 每个像素点的取值范围[0,255] 的正整数。 请你给图像每个像素点值,加上一个整数 k (可以是负数),得到新图 newImg , 使得新图newImg 的所有像素平均值最接近中位值 128。 请输出这个整数 k。 输入描述 n …...
网工内推 | 运维工程师,CCNP认证优先,周末双休,多次调薪机会
01 驻场运维 职责描述: 1、驻场某大型汽车整车厂,配合客户完成网络相关(路由交换)的项目。 2、按照客户要求,与项目组配合共同完成项目前期调研,设计,规划,项目中期调试测试&#…...
LeetCode 1337. The K Weakest Rows in a Matrix【数组,二分,堆,快速选择,排序】1224
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
如何使用Spring提供的Retry
0、本例中使用的是 springboot-2.0.4.RELEASE,jdk1.8 1、导包。需要注意版本。2.0.0需要spring6和jdk17 <dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId><version>1.3.4<…...
【ONE·Linux || 进程间通信】
总言 进程间通信:简述进程间通信,介绍一些通信方式,管道通信(匿名、名命)、共享内存等。 文章目录 总言1、进程间通信简述2、管道2.1、简介2.2、匿名管道2.2.1、匿名管道的原理2.2.2、编码理解:用fork来共…...
207.Flink(二):架构及核心概念,flink从各种数据源读取数据,各种算子转化数据,将数据推送到各数据源
一、Flink架构及核心概念 1.系统架构 JobMaster是JobManager中最核心的组件,负责处理单独的作业(Job)。一个job对应一个jobManager 2.并行度 (1)并行度(Parallelism)概念 一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。这样,包含并行子任…...
debian终端快捷键设置
为了方便使用图形化debian,快捷调出shell终端是提升工作学习效率的最重要的一步。 1.首先点击右上角,选择设置 2.点击键盘,选择快捷键,并创建自定义快捷键 3.点击添加快捷键 4.根据图中提示创建快捷键 Name: Terminal Command…...
原生ajax
什么是Ajax Asynchronous JavaScript and xml 异步的 js 和 xml(数据承载方式) ,本质:使用js提供的异步对象XMLHttpRequest 异步的向服务器提交请求,并且接受服务器响应回来的数据。 使用ajax 1.创建异步对象 var xhrnew XMLHttp…...
面试题库(五):并发编程
多线程类的使用 java线程同步有哪些方法、各自的优缺点synchronized 和ReentrantLock区别,可重入锁是什么?threadlocal有什么用Java中创建线程有几种方式?分别是? 当主线程执行结束后,子线程还会继续执行下去吗?JUC中有哪些常用的集合?(项目中用到的)CopyOnWriteArray…...
Android FileProvider笔记
一、FileProvider是什么 通过FileProvider.getUriForFile(NonNull Context context, NonNull String authority, NonNull File file)方法获得一个有临时权限的Uri给客户端用来访问本APP文件。 当然看FileProvider类的注释更加详细 二、代码示例 <providerandroid:name&q…...
华为云云耀云服务器L实例评测 |云服务器选购
华为云耀云服务器 L 实例是一款轻量级云服务器,开通选择实例即可立刻使用,不需要用户再对服务器进行基础配置。新用户还有专享优惠,2 核心 2G 内存 3M 带宽的服务器只要 89 元/年,可以点击华为云云耀云服务器 L 实例购买地址去购买…...
2023-09-22 LeetCode每日一题(将钱分给最多的儿童)
2023-09-22每日一题 一、题目编号 2591. 将钱分给最多的儿童二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数 money ,表示你总共有的钱数(单位为美元)和另一个整数 children ,表示你要将钱分配给多少个儿童。 你…...
功能测试的重要性
前言 在软件开发领域,功能测试是确保软件质量的关键步骤之一。正如其名称所示,功能测试是验证软件产品是否具有其描述的功能和符合预期结果的过程。这种类型的测试非常重要,因为它不仅可以帮助团队检测潜在的缺陷并提高软件品质,…...
《Linux高性能服务器编程》--高级I/O函数
目录 1--Pipe() 2--dup() 和 dup2() 3--readv() 和 writev() 4--sendfile() 5--mmap() 和 munmap() 6--spice() 7--tea() 8--fcntl() 1--Pipe() #include <unistd.h> int pipe(int fd[2]); // 成功返回0,失败返回-1 pipe() 函数可用于创建一个管道&a…...
算法通关村 | 透彻理解动态规划
1. 斐波那契数列 1,1,2,3,5,8,13,..... f(n) f(n-1) f(n-2) 代码实现 public static int count_2 0;public int fibonacci(int n){if (n < 2){count_2;return n;}int f1 1;int f2 2;i…...
数据结构(持续更新)
嗯,怎么说数据结构果然很玄妙。按照能不能存储多行元素大致分为两类。 不能存好几行的数据包括pair,int,float,double,char,struct; 能存好几行的:map,unordered_map,list,vector,set,string,array。 1. pair “pair” 是 C++ 标准库中的一个模板类,它用于存储…...
nginx部署vue后显示500 Internal Server Error解决方案
前言 描述:当我配置好全部之后,通过 服务器 ip 地址访问,遇到报错信息:500 Internal Server Error。 今天部署vue前端项目一直报错500,无法显示出主页面。 一个以为是自己的dist位置没有访问正确或者nginx.conf的位…...
微调大型语言模型(一):为什么要微调(Why finetune)?
今天我们来学习Deeplearning.ai的在线课程 微调大型语言模型(一)的第一课:为什么要微调(Why finetune)。 我们知道像GPT-3.5这样的大型语言模型(LLM)它所学到的知识截止到2021年9月,那么如果我们向ChatGPT询问2022年以后发生的事情,它可能会…...
【GO】网络请求例子
post请求;multipart/form-data类型 // 构建请求参数requestData : map[string]interface{}{"gb": "","code": "","reMemberInfo": map[string]interface{}{"shi": "","…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
