首页 > 数据库 >[Oracle] LeetCode 300 Longest Increasing Subsequence

[Oracle] LeetCode 300 Longest Increasing Subsequence

时间:2022-10-14 15:36:36浏览次数:42  
标签:nums 300 subsequence len int Subsequence Longest array dp

Given an integer array nums, return the length of the longest strictly increasing subsequence.

A subsequence is a sequence that can be derived from an array by deleting some or no elements without changing the order of the remaining elements. For example, [3,6,2,7] is a subsequence of the array [0,3,1,6,2,2,7].

Solution

很直接的 \(DP\) 复杂度为 \(O(N^2)\), 即设 \(dp[i]\) 表示以 \(i\) 结尾序列的答案,那么转移为:

\[dp[i]=\max(dp[i], dp[j]+1), \ j< i \]

且条件是 \(nums[j]<nums[i]\)

考虑如何变成 \(O(N\log N)\) 的做法,每次当下一个数比当前列表中最后一个大时,那么直接加在后面;否则利用 \(lower\_bound\) 进行替换,因为我们只关心最大的长度

点击查看代码
class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int len=0;
        for(auto ele:nums){
            if(len==0 || nums[len-1]<ele){
                nums[len] = ele;len++;
            }
            else {
                *lower_bound(nums.begin(), nums.begin()+len, ele)=ele;
            }
        }
        return len;
    }
};

标签:nums,300,subsequence,len,int,Subsequence,Longest,array,dp
From: https://www.cnblogs.com/xinyu04/p/16791702.html

相关文章

  • ARC150F Constant Sum Subsequence 解题记录
    题意:给定长度为\(n\)的序列\(A\),保证对每个\(i\in[1,S]\),\(i\)都在\(A\)中出现了至少一次。令\(X\)表示\(A\)重复\(S\)次组成的序列。求最小的\(L\),满足:......
  • 恒玄BES2300蓝牙音频SoC,WiFi/BT双模AIoT SoC芯片
    BES2300有多个版本、后缀不同配置也不尽相同。BES2300系列是全集成自适应主动降噪方案,支持蓝牙5.0、IBRT蓝牙监听技术和双模蓝牙4.2,它还支持第三代FWS全无线立体声技术、......
  • 西门子PLC S7-300出现通讯故障及远程维护办法
    西门子S7-300是一款高性能、应用广泛的PLC设备,模块化、分布式结构以及简单易学的操作,使得西门子S7-300成为中小型应用的高性价比方案。如电气设备、数控机床、纺织机械、包......
  • Codeforces Round #825 (Div. 2)D. Equal Binary Subsequences
    CodeforcesRound#825(Div.2)D.EqualBinarySubsequences题意:给定一个长度为2n的01字符串s。你可以对其中一个子序列进行向右旋转一个位置。问能否将字符串分割成......
  • 算法竞赛入门【码蹄集新手村600题】(MT1251-1300)
    算法竞赛入门【码蹄集新手村600题】(MT1251-1300)文章目录​​算法竞赛入门【码蹄集新手村600题】(MT1251-1300)​​​​前言​​​​为什么突然想学算法了?​​​​为什么选择......
  • UVa 11300 Spreading the Wealth 题解
    非常好的一道数学题。原题链接(洛谷)原题链接(UVa)题目分析(参考刘汝佳《算法竞赛入门经典\(\cdot\)训练指南》)本身看起来很复杂。不要急,我们慢慢分析。首先,每个人最终......
  • 超300万用户围观的PICO4新品发布会究竟有哪些亮点,它能成为国货之光吗?
     今晚,令人翘首以待的PICO4国内新品发布会重磅来袭,被誉为以一己之力带火国内VR的PICO在消费级VR领域再一次为我们带来了惊喜。​自去年8月PICO被字节跳动收购以来,可以说是强......
  • Subsequence Path(图论,DP)
    题意给定\(N\)个点,\(M\)条边的无向图,边权为\(C_i\)。给定一个序列\(E=(E_1,E_2,\dots,E_K)\),其中\(E_i\)表示边的编号。路径是“好路径”当且仅当边的编号按照经过......
  • 深度剖析0.1 +0.2===0.30000000000000004的原因
    用一句话概括就是:EcmaScrpt规范定义Number的类型遵循了IEEE754-2008中的64位浮点数规则定义的小数后的有效位数至多为52位导致计算出现精度丢失问题!如果你看不懂这句话,仔细......
  • 如何解决0.1 +0.2===0.30000000000000004类问题
    上篇博客深度剖析了0.1+0.2===0.30000000000000004的原因。这篇博客将主要提供几种解决小数精度丢失问题的Javascript类库的代码示例,以及简单的原生EcmaScript方法的代码......