试题详情
- 简答题给定一个由n个数组成的序列,要求该序列的最长单调上升子序列,请设计对应的算法并分析其时间复杂度,如果时间复杂度劣于O(nlogn)的,将其优化为O(nlogn)时间复杂度的算法。
-
假设当前已求出m[1..i-1],当前保留的状态集合为S,下面计算m[i]。
1、若存在状态k∈S,使得x[k]=x[i],则状态m[i]必定不需保留,不必计算。因为,不妨设m[i]=m[j]+1,则x[j]2、否则,m[i]=1+max{m[j]|x[j] 3、若2成立,则我们往S中增加了一个状态,为了保持S的性质,我们要对S进行维护,若存在状态k∈S,使得m[i]=m[k],则我们有x[i] x[i],j∈S}。于是状态k应从S中删去。
从性质D和算法描述可以发现,S实际上是以x值为关键字(也是以m值为关键字)的有序集合。若使用平衡树实现有序集合S,则该算法的时间复杂度为O(n*logn)。(每个状态转移的状态数仅为O(1),而每次状态转移的时间变为O(logn))。 关注下方微信公众号,在线模考后查看
热门试题
- 数据结构与算法里,快速排序是()的一种。
- 建立计算模型的目的是为了使()。
- 贪心算法与动态规划算法的主要区别是()。
- 构成数组的各个元素可以有不同的数据类型。
- 数据结构与算法中,希尔排序就分类而言属于
- 数据结构与算法里,算法的特性包括()
- 若L是一个NP完全问题,L经过多项式时间
- 流程图是算法的图形表示形式。
- 数据结构与算法里,荷兰国旗算法应具有的算
- 以深度优先方式系统搜索问题解的算法称为(
- 设有n个顾客同时等待一项服务,顾客i需要
- 数据结构与算法里,冒泡排序的时间复杂度是
- --即自减,其意义是自身的值减去1。
- 分支限界法解最大团问题时,活结点表的组织
- 数据结构与算法里,荷兰国旗算法要用循环嵌
- 有若干只鸡兔同在一个笼子里,从上面数,有
- 请列举几个常见的NP完全问题。
- 动态查找的常用方法是二叉排序树。
- 使用分治法求解不需要满足的条件是()。
- 在一个操场的四周摆放着n堆石子。现要将石