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

LeetCode【300】最长递增子序列

题目:
在这里插入图片描述

思路:

  • 通常来说,子序列不要求连续,而子数组或子字符串必须连续;
  • 对于子序列问题,第一种动态规划方法是,定义 dp 数组,其中 dp[i] 表示以 i 结尾的子序列的性质。在处理好每个位置后,统计一遍各个位置的结果即可得到题目要求的结果。
  • 在本题中, dp[i] 可以表示为以 i 结尾的、最长子序列长度。对于每个位置 i ,如果其之前的某个位置 j 所对应的数字小于位置 i 所对应的数字 ,则我们可以获得一个以 i 结尾、长度为 dp[j] + 1 的子序列。为了遍历所有情况,我们需要对 i 和 j 进行两层循环,其时间复杂度为 O(n2)。

参考:
https://blog.csdn.net/weixin_43894455/article/details/130477427
https://blog.csdn.net/qfc_128220/article/details/127931755

代码:

public int lengthOfLIS(int[] nums) {//动态规划表int[] dp = new int[nums.length];// dp[0] = 1; // 这里不行,考虑为什么?int max = 1;for (int i = 0; i < nums.length; i++) {//base case 每个位置本身长度dp[i] = 1;for (int j = 0; j < i; j++) {// i 位置依次向前比 ,比j 位置大,就是 1 + dp[i]// 根据不同j位置上的数,来更新最大值if (nums[i] > nums[j]) {      // 注意,这里比较的是 nums ,不是dp数组dp[i] = Math.max(dp[i], 1 + dp[j]);max = Math.max(max, dp[i]);}}}return max;}
http://www.lryc.cn/news/190473.html

相关文章:

  • JRebel在IDEA中实现热部署 (JRebel实用版)
  • uniapp微信小程序之分包异步化之组件分包
  • Nacos(替代Eureka)注册中心
  • FHRP首跳冗余的解析
  • 垂直分表为什么能够加快查询效率?
  • Linux网络基础知识全面总结
  • 【arm实验2】按键中断事件控制实验
  • 【数据结构-栈 二】【单调栈】每日温度、接雨水
  • 基于Keil a51汇编 —— 控制语句
  • 单目标优化算法:火鹰优化算法(Fire Hawk Optimizer,FHO)求解23个函数--提供MATLAB代码
  • 数据集笔记:分析OpenCellID 不同radio/ create_time update_time可视化
  • 【特纳斯电子】血氧饱和度监测仪设计-实物设计
  • 雪花算法生成ID传到前端之后精度丢失问题
  • Windows 10 - 适用于各种服务(Redis、MySQL)的文件迁移到其他目录后,导致的各种服务找不到的问题 - 注册服务 - 关闭服务 - 重启服务
  • Java 串行接口调用优化
  • 【Java 进阶篇】JavaScript `typeof` 操作符详解
  • electron之进程间通信
  • Linux网络编程:UDP协议和TCP协议
  • 【SCS-CN】SCS-CN模型中CN值的确定
  • 【C++】继承 ① ( 面向对象特点 | 类之间的关系 | 单继承与多继承 | 继承关系特性 )
  • 虹科方案 | 虹科ATTO加速虚拟存储管理
  • Docker项目部署lnmp+wordpress
  • leetcode 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II
  • 系统架构设计:5 论软件的可靠性设计
  • 03 独立看门狗 hal库 stm32cubemx
  • 大数据学习(6)-hive底层原理Mapreduce
  • SQLite:TIMESTAMP类型使用
  • 迅镭激光GI系列高功率激光切割机成功中标覆铜板龙头企业HZ公司
  • 基于SSM的网络安全宣传网站设计与实现
  • k8s修改集群IP--重置集群