数组的最长递减子序列

news/2024/11/29 12:48:31/

求一个数组的最长递减子序列
如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}
思路:动态规划
构建与原数组同等容量的辅助数组dp,记录以每个元素结束的最大序列的长度,如dp[0]=1,如果dp[i]<dp[i-1],则dp[i]=dp[i-1]+1,否则dp[i]=1;循环可求出dp数组。最终根据求出的dp数组最大值以及该值的索引按需截取子串即可!
最长递增子序列反推即可!

line = '9 5 4 3 2 5 4 3 1';
line = line.split(' ');
let n = line.length;
let res = [];
let dp = [];
dp[0] = 1;
//构造动态数组记录截止每个元素时的递减长度
for (let i = 1; i < n; i++) {if (line[i] < line[i - 1]) {dp[i] = dp[i - 1] + 1;} else {dp[i] = 1;}
}
//console.log('dp', dp);
let max = dp[0];//
let tag = 0;
//找出截止该元素最长递减子列表长度及及其所在位置索引
for (let i = 1; i < n; i++) {if (max <= dp[i]) {max = Math.max(max, dp[i]);//找出最长递减子列表长度的结束位置tag = i;}
}
//console.log('max', max);
//用substr截取即可,tag+1是为了防止出现-1
res = line.join('').substr(tag + 1 - max, max);
// res=line.slice(tag-max,tag);
//console.log('tag', tag);
console.log('res', res);

在这里插入图片描述


http://www.ppmy.cn/news/1183573.html

相关文章

Java题:查找单链表中第 k 个节点元素的值

遇到过一道奇奇怪怪的Java题&#xff0c;就整理出自己的想法&#xff0c;不知道对不对&#xff0c;还望大佬们指导。 题目 给定一个单链表&#xff0c;查找单链表中第 k 个节点元素的值&#xff0c;同时要求使用时间复杂度低的算法实现。 单链表的定义如下&#xff1a; cla…

PHP简单实现预定义钩子和自定义钩子

在PHP中&#xff0c;钩子&#xff08;Hooks&#xff09;是一种机制&#xff0c;允许开发人员在特定的时机插入自定义代码。通过使用钩子&#xff0c;开发人员可以在应用程序的特定事件发生时执行自定义的功能或逻辑 钩子有两种类型&#xff1a;预定义钩子和自定义钩子。 预定…

OSPF,RIP和BGP的路由汇总

OSPF路由汇总 OSPF的路由汇总需要注意以下两点 1.OSPF的路由汇总仅支持手动汇总 注&#xff1a;距离矢量路由协议支持自动路由汇总&#xff0c;链路状态路由协议仅支持手动路由汇总&#xff08;OSPF,ISIS&#xff09; 2.OSPF的路由汇总只在区域边界进行汇总 OSPF的路由汇总…

nodejs+vue全国公考岗位及报考人数分析

传统的搜索引擎尽管解决了信息搜索问题&#xff0c;但无法进行有效的数据分析和优质资源的获取。并且&#xff0c;人们的需求不同&#xff0c;数据的要求也不同。为了解决这一问题&#xff0c;定向抓取数据的爬虫诞生了。它的诞生把人们从重复性的劳动中解放出来&#xff0c;节…

路由器和交换机之间的区别

1.工作层不同 路由器工作在网络层&#xff0c;根据IP地址寻址&#xff0c;处理TCP/IP协议 交换机工作在中继层&#xff0c;根据MAC地址寻址&#xff0c;无法处理TCP/IP协议 2.转发对象不同 路由器转发的对象是IP地址&#xff08;网络地址&#xff09;&#xff0c;负责让主机连接…

实战经验分享FastAPI 是什么

FastAPI 是什么&#xff1f;FastAPI实战经验分享 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7e9e23e6fe3444238413d91f37064b65.png](https://fastapi.tiangolo.com/) FastAPI 是一个先进、高效的 Python Web 框架&#xff0c;专门用于构建基于 Python 的 API。它是…

SpringCloud 微服务全栈体系(六)

第八章 Gateway 服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管…

Redis学习笔记5:基于springboot的lettuce redis客户端断线重连ConnectionWatchdog

lettuce默认采用共享本地连接的模式和redis服务器端交互&#xff0c;如果连接断开如何及时发现并且重新建立连接呢&#xff1f;通过翻阅源码发现有两种方案&#xff0c;方案一&#xff1a;开启连接有效性检测&#xff1b;方案二&#xff1a;通过ConnectionWatchdog监视器 一个对…