代码随想录算法训练营Day52 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组 | Python | 个人记录向
注:Day51休息。
本文目录
- 300.最长递增子序列
- 做题
- 看文章
- 674. 最长连续递增序列
- 做题
- 看文章
- 718. 最长重复子数组
- 做题
- 看文章
- 以往忽略的知识点小结
- 个人体会
300.最长递增子序列
代码随想录:300.最长递增子序列
Leetcode:300.最长递增子序列
做题
无思路。
看文章
动规五部曲:
- dp[i]的定义。dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度。
- 状态转移方程。if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1)。
- dp[i]的初始化。至少为1。
- 确定遍历顺序。遍历i的循环在外层,遍历j则在内层。
- 举例推导dp数组。
看完思路后自己实现。这里有个特殊点,最后要return max(dp),因为dp数组代表的是以 nums[i] 为结尾的最长递增子序列的长度,故需要返回最大值。
class Solution:def lengthOfLIS(self, nums: List[int]) -> int:size = len(nums)dp = [1] * sizefor i in range(size):for j in range(i):if nums[i] > nums[j]:dp[i] = max(dp[i], dp[j] + 1)return max(dp)
时间复杂度: O(n^2)
空间复杂度: O(n)
674. 最长连续递增序列
代码随想录:674. 最长连续递增序列
Leetcode:674. 最长连续递增序列
做题
无思路。
看文章
动规五部曲:
- dp[i]的定义。dp[i]:以下标i为结尾的连续递增的子序列长度为dp[i]。
- 状态转移方程。如果 nums[i] > nums[i - 1],那么以 i 为结尾的连续递增的子序列长度 一定等于 以i - 1为结尾的连续递增的子序列长度 + 1 。即:dp[i] = dp[i - 1] + 1。
- dp[i]的初始化。至少为1。
- 确定遍历顺序。从前往后,单层遍历
- 举例推导dp数组。
class Solution:def findLengthOfLCIS(self, nums: List[int]) -> int:size = len(nums)if size == 1:return 1dp = [1] * sizefor i in range(1, size):if nums[i] > nums[i-1]:dp[i] = dp[i-1] + 1return max(dp)
时间复杂度:O(n)
空间复杂度:O(n)
718. 最长重复子数组
代码随想录:718. 最长重复子数组
Leetcode:718. 最长重复子数组
做题
无思路。
看文章
动规五部曲:
- dp数组的定义。dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。(i-1是为了方便初始化)
- 状态转移方程。根据dp[i][j]的定义,dp[i][j]的状态只能由dp[i - 1][j - 1]推导出来,即当A[i - 1] 和B[j - 1]相等的时候,dp[i][j] = dp[i - 1][j - 1] + 1。根据递推公式可以看出,遍历 i 和 j 要从1开始!
- dp[i]的初始化。dp[i][0] 和dp[0][j]初始化为0。
- 确定遍历顺序。
- 举例推导dp数组。
class Solution:def findLength(self, nums1: List[int], nums2: List[int]) -> int:dp = [[0] * (len(nums2)+1) for _ in range(len(nums1)+1)]res = 0for i in range(1, len(nums1)+1):for j in range(1, len(nums2)+1):if nums1[i-1] == nums2[j-1]:dp[i][j] = dp[i-1][j-1] + 1res = max(res, dp[i][j])return res
时间复杂度:O(n × m),n 为A长度,m为B长度
空间复杂度:O(n × m)
以往忽略的知识点小结
- 子序列的dp数组定义:以 i 结尾的最长xxx子序列
个人体会
完成时间:1h50min。
心得:新题型,用动态规划处理子序列问题。
相关文章:
代码随想录算法训练营Day52 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组 | Python | 个人记录向
注:Day51休息。 本文目录 300.最长递增子序列做题看文章 674. 最长连续递增序列做题看文章 718. 最长重复子数组做题看文章 以往忽略的知识点小结个人体会 300.最长递增子序列 代码随想录:300.最长递增子序列 Leetcode:300.最长递增子序列 …...
Python编程的黑暗魔法:模块与包的神秘力量!
哈喽,我是阿佑,今天给大家讲讲模块与包~ 文章目录 1. 引言1.1 模块化编程的意义1.2 Python中模块与包的概念概述 2. 背景介绍2.1 Python模块系统模块的定义与作用Python标准库简介 2.2 包的结构与目的包的定义与目录结构包在项目组织中的重要性 3. 创建与…...
python编程不良习惯纠正: 慎用顶层代码
这几天在跑一个开源代码时,发现,通过pdb断点不起作用,经过一番检查,发现代码运行时甚至没有进入main函数,就开始一顿操作. 然后定位到是在执行"import"操作的时候发生了冗余操作. 经过进一步的检查发现,是下…...
Simulate Ring Resonator in INTERCONNECT
Simulate Ring Resonator in INTERCONNECT 正文正文 首先,我们采用 Interconnect 模块的工作流程 一文中介绍的方法添加一个直波导器件。接着,我们需要对它的名称进行更改,此时我们看左侧 Property View - Root Element 中的 General 属性,我们发现 name 属性是灰色的,无…...
Flutter 中的 DrawerController 小部件:全面指南
Flutter 中的 DrawerController 小部件:全面指南 Flutter 是一个流行的跨平台移动应用开发框架,它提供了丰富的组件和工具来帮助开发者构建高质量的应用。在Flutter中,DrawerController并不是一个内置的组件,但是它的概念可以用于…...
Flutter 中的 ImageFiltered 小部件:全面指南
Flutter 中的 ImageFiltered 小部件:全面指南 在Flutter中,ImageFiltered是一个功能强大的小部件,它允许你对图片应用各种图像处理效果,如模糊、颜色转换、对比度调整等。通过ImageFiltered,你可以为应用添加丰富的视…...
C++第二十弹---深入理解STL中vector的使用
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、vector的介绍 2、vector的使用 2.1、构造函数和赋值重载 2.1.1、构造函数的介绍 2.1.2、代码演示 2.2、容量操作 2.3、遍历 2.4、增删…...
【赠书第24期】Java项目开发实战(微视频版)
文章目录 前言 1 项目选择与需求分析 1.1 项目选择 1.2 需求分析 2 系统设计 2.1 系统架构设计 2.2 数据库设计 2.3 接口设计 3 编码实现 3.1 环境搭建 3.2 编码规范 3.3 编码实现 4 测试与部署 4.1 单元测试 4.2 系统测试 4.3 部署与上线 5 总结与展望 6 推…...
多波段光源 通过8种波长实现的成像解决方案
光源在机器视觉中的重要性不容小觑,它直接影响到图像的质量,进而影响整个系统的性能。光源的作用包括提供足够的照明,并确保被摄物体的特征能够被准确地捕捉到图像中,使被检测物体产生清晰的图像,提高图像的对比度和亮…...
【Python】 如何从日期中减去一天?
基本原理 在编程中,日期和时间的处理是一个常见的需求,尤其是在处理日志、调度任务、数据分析等场景中。Python 提供了多种方式来处理日期和时间,其中最常用的库是 datetime。datetime 模块包含了日期(date)、时间&am…...
【MySQL精通之路】SQL优化(1)-查询优化(10)-外部联接简化
主博客: 【MySQL精通之路】SQL优化(1)-查询优化-CSDN博客 上一篇: 【MySQL精通之路】SQL优化(1)-查询优化(9)-外部联接优化-CSDN博客 下一篇: 【MySQL精通之路】SQL优化(1)-查询优化(11)-多范围查询优化-CSDN博客 查询时FROM子句中的表达…...
SCT2360:4V-28v Vin,6A同步降压DCDC转换器与EMI减少
特点: 宽4V-28V输入电压范围 0.6V14V输出电压范围 6A连续输出电流 HS/LS电源的集成式36m2/18m2 Rdson MOSFET 固定1 ms软启动时间 可选择的400KHz,800KHz,1.2MHz开关频率 可选择的PWM、PFM和USM操作模式 逐周期电流限制 输出过电压保护 超温保…...
企微运营SOP:构建高效、规范的运营流程
随着企业微信在企业内部沟通协作中的广泛应用,如何构建一套高效、规范的企微运营流程成为了众多企业关注的焦点。本文将详细探讨企微运营SOP(Standard Operating Procedure,标准操作程序)的重要性、构建方法以及实施效果ÿ…...
<商务世界>《76 微课堂<茶叶(2)-种类>》
1 茶叶总共分为6个大类 六大茶类分类法:红茶、绿茶、青茶、黄茶、黑茶、白茶六大茶类 2 红茶 红茶具有红茶、红汤、红叶和香甜味醇的特征。以水冲泡,不仅香气迎人,还呈现出特有的深红茶色,因此被人称为“红茶”。 分布地区&…...
安卓Bug总结
为什么写这篇文章 安卓十年开发遇到过得Bug做一个总结,大同小异,总结教训。 这里存放BUG目录列表 文章列表内容关键字Gradle常见问题及总结包括以下问题:gradle插件与gradle home版本关系错误、Gradle下载太慢、Executionfailed forJetifyTr…...
基于小波分析和机器学习(SVM,KNN,NB,MLP)的癫痫脑电图检测(MATLAB环境)
癫痫是一种由大脑神经元突发性异常放电导致的大脑功能性障碍疾病。据世界卫生组织统计,全球约有7000万人患有癫痫。癫痫患者在发病时呈现肌肉抽搐、呼吸困难、意识丧失等症状。由于癫痫发作的偶然性,患者极有可能在高空、驾驶、游泳等危险情况下发病并丧…...
python数据分析:爬取某东商城商品评论数据并做词云展示(含完整源码及详细注解)
python数据分析,爬取某东商城商品评论数据并做词云展示。 一、明确爬取的网页及结构 找到要爬取的网页地址,发现有一个获取json格式评论数据的接口: url = "https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=217…...
当HR问你是否单身时,该怎么回答?
知识星球(星球名:芯片制造与封测技术社区,星球号:63559049)里的学员问:我是晶圆厂厂务工程师,最近在面试新工作,但是几乎每家HR都会问我同一个问题:你结婚没有࿱…...
大数据开发面试题【Spark篇】
115、Spark的任务执行流程 driver和executor,结构式一主多从模式, driver:spark的驱动节点,用于执行spark任务中的main方法,负责实际代码的执行工作;主要负责:将代码逻辑转换为任务、在executo…...
深入分析 Android Activity (六)
文章目录 深入分析 Android Activity (六)1. Activity 的权限管理1.1 在 Manifest 文件中声明权限1.2 运行时请求权限1.3 处理权限请求结果1.4 处理权限的最佳实践 2. Activity 的数据传递2.1 使用 Intent 传递数据2.2 使用 Bundle 传递复杂数据 3. Activity 的动画和过渡效果3…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
