当前位置: 首页 > news >正文

动态规划-子序列问题——1218.最长定差子序列

1.题目解析

题目来源:1218.最长定差子序列——力扣

测试用例

2.算法原理

1.状态表示

本题可以看作是寻找一个等差序列,并且公差给出,这里并不是普通的使用一个dp表,而是将arr与dp表同时存储于一个哈希表,arr[i]映射dp[i],这样就可以只遍历符合等差序列的每个位置而不用遍历所有位置

2.状态转移方程

只需要找到符合等差序列的哈希表就直接对等差序列长度+1即可,即:hash[arr[i]] = hash[arr[i] - difference] + 1;

3.初始化

最小等差序列的长度为1,将第一个哈希表的位置置为1即可

4.填表顺序

从左到右只填写符合等差序列位置的值

5.返回值

返回哈希表的最大值

3.实战代码

class Solution {
public:int longestSubsequence(vector<int>& arr, int difference) {int n = arr.size();unordered_map<int,int> hash;//arr[i] - dp[i]hash[arr[0]] = 1;int ret = 1;for(int i = 1;i < n;i++){hash[arr[i]] = hash[arr[i] - difference] + 1;ret = max(ret,hash[arr[i]]);}return ret;}
};

 


http://www.mrgr.cn/news/59889.html

相关文章:

  • Ansible 的脚本 --- playbooks剧本
  • Python浪漫之画星星
  • 网络编程_day3
  • Day02回文数
  • Vue插件能做什么,Vue如何自定义插件
  • flink使用hikariCP数据库连接池,导致连接泄露
  • VS Code 代码提示 重叠 显示不全
  • 小白投资理财 - 看懂 K 线形态下
  • C++的相关习题(2)
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-25
  • 多eSIM配置文件(MEP)
  • 网络搜索引擎Shodan(4)
  • C++线程池手写实现
  • 【Linux】MySQL主从复制
  • 宝安区石岩上排停车场(月卡350元)
  • 使用Python实现深度学习模型:智能极端天气事件预测
  • git合并上传小技巧
  • flutter vscode app 的输出在哪里
  • 新160个crackme - 084-slayer_crackme1
  • shutdown abort关库,真的可能起不来吗?
  • 一文彻底搞定MySQL中的JSON类型,效率飞起。
  • 软硬件开发面试问题大汇总篇——针对非常规八股问题的提问与应答(代码规范与生态管理)
  • shodan2---清风
  • 2025 - AI人工智能药物设计 - 中药网络药理学和毒理学的研究
  • opencv-platform实现人脸识别
  • 二十三、Python基础语法(包)