首页 > 其他分享 >最长递增子序列

最长递增子序列

时间:2023-02-17 00:33:11浏览次数:36  
标签:nums 递增 元素 cell 数组 序列 最长

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

/**
 * 最长递增子序
 * 很具小巧思。新建数组 cell,用于保存最长上升子序列。
 * 对原序列进行遍历,将每位元素二分插入 cell 中。
 * 如果 cell 中元素都比它小,将它插到最后
 * 否则,用它覆盖掉比它大的元素中最小的那个。
 * 总之,思想就是让 cell 中存储比较小的元素。这样,cell 未必是真实的最长上升子序列,但长度是对的。
 */
const lengthOfLIS = (nums = [0, 1, 0, 3, 2, 3]) => {
    const len = nums.length
    if (len <= 1) return len
    const cell = [nums[0]]
    for (let i = 1; i < len; i++) {
        const num = nums[i];
        if (cell[cell.length - 1] < num) {
            cell.push(num)
            continue
        }
        let startIdx = 0,
            endIdx = cell.length - 1
        while (startIdx < endIdx) {
            const midIdx = Math.floor((startIdx + endIdx) / 2)
            if (cell[midIdx] < num) {
                startIdx = midIdx + 1
            } else {
                endIdx = midIdx
            }
        }
        cell[startIdx] = num
    }
    return cell.length
};

  

标签:nums,递增,元素,cell,数组,序列,最长
From: https://www.cnblogs.com/zhenjianyu/p/17128759.html

相关文章

  • R语言DCC-GARCH模型对上证指数、印花税收入时间序列数据联动性预测可视化
    全文链接:http://tecdat.cn/?p=31630原文出处:拓端数据部落公众号普通的模型对于两个序列的波动分析一般是静态的,但是dcc-garch模型可以实现他们之间动态相关的波动分析,即......
  • 8.drf-序列化器
    在序列化类中,如果想使用request,则可以通过self.context['request']获取序列化器的主要由两大功能-对请求的数据进行校验(底层调用的是Django的Form和ModelForm)-对数......
  • 最长有效括号
    给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。/***@param{string}s*@return{number}*/constlongestValidParenthese......
  • 力扣---5. 最长回文子串
    给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案......
  • C# 序列化 反序列化
    ///<summary>///序列化///</summary>///<paramname="obj"></param>///<returns></returns>privatestaticbyte[]?Serialize(objectobj){if(obj==n......
  • 力扣3. 无重复字符的最长子串
    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度......
  • R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格|附代码数据
    全文链接:http://tecdat.cn/?p=18860最近我们被客户要求撰写关于时间序列的研究报告,包括一些图形和统计输出。时间序列分析是统计学中的一个主要分支,主要侧重于分析数据集......
  • 力扣---3. 无重复字符的最长子串
    给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:......
  • leetcode - 1124 表现良好的最长时间段
    1124.表现良好的最长时间段题目给你一份工作时间表hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于8小时的时候,那么这一天就是......
  • R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格|附代码数据
    全文链接:http://tecdat.cn/?p=18860最近我们被客户要求撰写关于时间序列的研究报告,包括一些图形和统计输出。时间序列分析是统计学中的一个主要分支,主要侧重于分析数据集......