[C国演义] 第十八章
第十八章
- 最长斐波那契子序列的长度
- 最长等差数列
- 等差序列划分II - 子序列
最长斐波那契子序列的长度
力扣链接
- 子序列 ⇒ dp[i] — —
以 arr[i] 结尾的所有子序列中, 斐波那契子序列的最长长度
- 子序列 ⇒ 状态转移方程 — —
根据最后一个位置的组成来划分
- 初始化 — — 根据状态转移方程, 全都初始化为
2
- 遍历顺序 — — 根据状态转移方程,
从前往后
- 返回结果 — — 返回dp表中的最大值, 记作res; 如果res < 3, 那就返回0, 如果res > 3, 那就返回res
class Solution {
public:int lenLongestFibSubseq(vector<int>& arr) {int n = arr.size();// 建表 + 初始化vector<vector<int>> dp(n, vector<int>(n, 2));// 记录返回结果int res = 2;// 优化unordered_map<int, int> hash; // <数组元素, 下标>for(int i = 0; i < n; i++){hash[arr[i]] = i;}// 填表for(int j = 2; j < n; j++) // 最后一个元素{for(int i = 1; i < j; i++) // 倒数第二个元素{int target = arr[j] - arr[i]; // 第一个元素// 斐波那契数列 -- 递增的if(target < arr[i] && hash.count(target)){dp[i][j] = dp[hash[target]][i] + 1;}res = max(res, dp[i][j]);}}// 返回结果return res < 3 ? 0 : res;}
};
最长等差数列
力扣链接
-
子序列 ⇒ dp[i]的含义:
dp[i]的含义: 以nums[i] 为结尾的所有子序列中, 等差子序列的最长长度
-
子序列 ⇒ 状态转移方程 :
-
初识化 :
都初始化为 2
🗨️dp[0][0] 也 初始化为 2? -
-
遍历顺序 : 根据
优化
, 我们采取固定第二个元素, 再枚举最后一个元素的遍历顺序
-
返回结果 :
返回dp表中的最大值
class Solution {
public:int longestArithSeqLength(vector<int>& nums) {int n = nums.size();// 建表 + 初始化vector<vector<int>> dp(n, vector<int>(n, 2));// 优化unordered_map<int, int> hash; // <数组元素, 下标>hash[nums[0]] = 0;int res = 2;// 先固定倒数第二个元素,在枚举最后一个元素 && 边dp边插入hash// -- 有利于找到离i最近的一个targetfor(int i = 1; i < n; i++) // 先固定倒数第二个元素{for(int j = i + 1; j < n; j++) // 枚举最后一个元素{int target = 2 * nums[i] - nums[j]; // 目标的第一个元素if(hash.count(target)) // 如果存在, 更新dp[i][j]{dp[i][j] = dp[hash[target]][i] + 1;}res = max(res, dp[i][j]);}// 依次插入hash表中hash[nums[i]] = i;}return res;}
};
等差序列划分II - 子序列
力扣链接
- 子序列 ⇒ dp[i] :
以nums[i] 为结尾的所有子序列中, 等差子序列的最大数目
- 子序列 ⇒ 状态转移方程 :
根据最后一个位置划分
- 初始化 :
全都初始化为 0
- 遍历顺序 :
根据优化 ⇒ 先固定倒数第二个元素, 再枚举最后一个元素
- 返回结果 :
累加dp表
class Solution {
public:int numberOfArithmeticSlices(vector<int>& nums) {int n = nums.size();// 建表 + 初始化vector<vector<int>> dp(n, vector<int>(n, 0));// 优化// 由于前面存在多个target && 我们要全部累加起来// --> 所以, 用一个vector来接收一下下标unordered_map<long long int, vector<int>> hash; // <数组元素, 下标>hash[nums[0]].push_back(0);int res = 0;// 先固定倒数第二个元素,在枚举最后一个元素 && 边dp边插入hashfor(int i = 1; i < n; i++) // 先固定倒数第二个元素{for(int j = i + 1; j < n; j++) // 枚举最后一个元素{long long int target = (long long int ) 2 * nums[i] - nums[j]; // 目标的第一个元素if(hash.count(target)) // 如果存在, 更新dp[i][j]{// 这里的 k 都是在合理区间内的, 全部累加for(auto k : hash[target]){// 全部都累加起来dp[i][j] += dp[k][i] + 1;}}res += dp[i][j];}// 依次插入hash表中hash[nums[i]].push_back(i);}return res;}
};
宣室求贤访逐臣,贾生才调更无伦。
可怜夜半虚前席,不问苍生问鬼神。
— — 李商隐《贾谊》
相关文章:

[C国演义] 第十八章
第十八章 最长斐波那契子序列的长度最长等差数列等差序列划分II - 子序列 最长斐波那契子序列的长度 力扣链接 子序列 ⇒ dp[i] — — 以 arr[i] 结尾的所有子序列中, 斐波那契子序列的最长长度子序列 ⇒ 状态转移方程 — — 根据最后一个位置的组成来划分 初始化 — — 根…...

发送失败的RocktMQ消息,你遇到过吗?
背景 需要通过flink同时向测试和线上的RocketMQ中写入数据 现象 在程序中分别创建了两个MqProducer,设置了不同的nameServerAddr,分别调用不同的producer向不同环境发消息,返回发送成功,但是在线上MQ中却查不到数据࿰…...

Unity中全局光照GI的总结
文章目录 前言一、在编写Shader时,有一些隐蔽的Bug不会直接报错,我们需要编译一下让它显示出来,方便修改我们选择我们的Shader,点击编译并且展示编译后的Shader后的内容,隐蔽的Bug就会暴露出来了。 二、我们大概回顾一…...

毫米波雷达技术在自动驾驶中的关键作用:安全、精准、无可替代
自动驾驶技术正以前所未有的速度不断演进,而其中的关键之一就是毫米波雷达技术。作为自动驾驶系统中的核心感知器件之一,毫米波雷达在保障车辆安全、实现精准定位和应对复杂环境中发挥着不可替代的作用。本文将深入探讨毫米波雷达技术在自动驾驶中的关键…...
Jetson平台180度鱼眼相机畸变校正调试记录
1.需求说明 由于使用180度GMSL鱼眼相机,畸变很大; 如需算法使用,必须进行畸变校正 2. 硬件说明 相机: 森云 SG2-AR0233-5300-GMSL2-190H 主板: Jetson NX 3. opencv畸变矫正处理 3.1 获取内参系数 现在森云相机可以直接读取内部flash获取内参系数 3.2 畸变处理 …...

axios请求的问题
本来不想记录,但是实在没有办法,因为总是会出现post请求,后台接收不到数据的情况,还是记录一下如何的解决的比较好。 但是我使用export const addPsiPurOrder data > request.post(/psi/psiPurOrder/add, data); 下面是封装的代码。后台接…...
【pandas刷题系列】Leetcode Problem: [595. 大的国家]
Problem: 595. 大的国家 文章目录 思路解题方法复杂度Code 思路 筛选出对应的数据,然后将不需要的列去除 解题方法 筛选出对应的数据,然后将不需要的列去除 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code import pandas a…...
【打卡】牛客网:BM46 最小的K个数
资料: 1. 排序 sort(name.begin(),name.end()); //升序 sort(name.rbegin(),name.rend()); //降序 【C】vector数组排序_vector排序_比奇堡咻飞兜的博客-CSDN博客 2. 把v2的部分值赋给v1 v1.assign(v2.begin(), v2.end()); // 用新元素替换vector 中的元素。…...
Android各类View触摸监听器失效
在XML布局中出现重叠的View,位置靠后定义的View会覆盖住位置靠前的View;即靠后的View会拦截触碰事件导致靠前的View无法收到触碰事件,无法触发监听器。 //例.<?xml version"1.0" encoding"utf-8"?> <android…...
未整理的知识链接
【scala】下划线用法总结 【scala】下划线用法总结_scala 下划线-CSDN博客 Spark Sql Row 的解析 Spark Sql Row 的解析 - 简书 spark dataframe foreach spark dataframe foreach_mob64ca12f0cf8f的技术博客_51CTO博客 spark- Dataframe基本操作-查询 https://blog.csdn.n…...

【2011年数据结构真题】
41题 41题解答: (1)图 G 的邻接矩阵 A 如下所示: 由题意得,A为上三角矩阵,在上三角矩阵A[6][6]中,第1行至第5行主对角线上方的元素个数分别为5, 4, 3, 2, 1 用 “ 平移” 的思想,…...

【科研绘图】MacOS上的LaTeX公式插入工具——LaTeXiT
在Mac上经常用OmniGraffle绘图,但是有个致命缺点是没办法插入LaTeX公式,很头疼。之前有尝试用Pages文稿插入公式,但是调字体和颜色很麻烦。并且,PPT中的公式插入感觉也不太好看。 偶然机会了解到了LaTeXiT这个工具,可…...
仓库自动化中的RFID技术的应用浅谈
仓库自动化与RFID技术的结合代表着现代供应链管理的一个重要革新。这两者的协同作用能够显著提升仓储效率、降低成本、增强库存管理、提高货物跟踪的准确性,并且使仓库操作更加智能化。 仓库自动化是一种通过应用自动化技术和系统来管理和优化仓库操作的方法。这种…...

容器网络-Underlay和Overlay
一、主机网络 前面讲了容器内部网络,但是容器最终是要部署在主机上,跨主机间的网络访问又是怎么样的,跨主机网络主要有两种方案。 二、 Underlay 使用现有底层网络,为每一个容器配置可路由的网络IP。也就是说容器网络和主机网络…...

基于FPGA的PCIe-Aurora 8/10音频数据协议转换系统设计阅读笔记
文章可知网下载阅读,该论文设计了一种 PC 到光纤模块(基于Aurora的光纤传输)的数据通路,成功完成了Aurora 以及 DDR 等模块的功能验证。 学习内容: 本次主要学习了Pcie高速串行总线协议、Aurora高速串行总线协议、DDR相…...

stm32控制舵机sg90
一、sg90简介 首先介绍说一下什么是舵机。舵机是一种位置(角度)伺服的驱动器。适用于一些需要角度不断变化的,可以保持的控制系统。sg90就是舵机的一种。 舵机的工作原理比较简单。舵机内部有一个基准电压,单片机产生的PWM信号通…...

state 和 props 有什么区别?
一、state 一个组件的显示形态可以由数据状态和外部参数所决定,而数据状态就是 state,一般在 constructor 中初始化 当需要修改里面的值的状态需要通过调用 setState 来改变,从而达到更新组件内部数据的作用,并且重新调用组件 r…...
Unity 获取桌面路径的方法
在Unity中,当我们碰到以下一些情况时,可能需要桌面的路径。 1、文件操作:如果我们想在游戏中保存或读取文件到桌面,就可以使用桌面路径来指定文件的位置。 2、调试信息:在开发过程中,我们往往会将一些调试…...

基于SSM的考研图书电子商务平台的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...

信息系统“好用”的标准探讨
数字化转型建设的关键不在建设信息系统。这是为了避免走信息化建设的老路——业务和信息化两张皮,寄希望信息系统解决业务问题。在数字化转型建设中,信息系统仍然是重要抓手和显性成果,是企业业务和数据的承载平台,也是IT厂商向客…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

渗透实战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…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...
用 FFmpeg 实现 RTMP 推流直播
RTMP(Real-Time Messaging Protocol) 是直播行业中常用的传输协议。 一般来说,直播服务商会给你: ✅ 一个 RTMP 推流地址(你推视频上去) ✅ 一个 HLS 或 FLV 拉流地址(观众观看用)…...