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

【力扣hot100】刷题笔记Day25

前言

  • 这几天搞工作处理数据真是类似我也,还被老板打电话push压力有点大的,还好搞的差不多了,明天再汇报,赶紧偷闲再刷几道题(可恶,被打破连更记录了)
  • 这几天刷的是动态规划,由于很成体系不适合零散刷,还是把代码随想录动态规划部分的题目快速再过一遍,代码简单但是思路也要记住

139. 单词拆分 - 力扣(LeetCode)

  • 动态规划

    • class Solution:def wordBreak(self, s: str, wordDict: List[str]) -> bool:s_length = len(s)dp = [False] * (s_length + 1)   # dp[i]表示s[0:i]能否被拼接dp[0] = True                    # 初始化,空字符串可以for i in range(1, s_length+1):  # 遍历结束指针ifor j in range(i):          # 遍历开始指针jif dp[j] and s[j:i] in wordDict:  # 如果j-1已经可拼,s[j:i]可再拼一个dp[i] = True        # 整体就可以拼接break               # 找到一组拼接,更新为True就退出return dp[s_length]

 300. 最长递增子序列 - 力扣(LeetCode)

  • 动态规划

    • class Solution:def lengthOfLIS(self, nums: List[int]) -> int:n = len(nums)  # dp[i]表示以nums[i]结尾的最长递增子串长度dp = [1] * n   # 初始化为全1,子串至少为1个res = 1  # 结果先取1for i in range(1, n):for j in range(i):if nums[i] > nums[j]:  # 只要比前面的递增,子串长度+1dp[i] = max(dp[i], dp[j] + 1)res = max(res, dp[i])  # 更新最长值return res

152. 乘积最大子数组 - 力扣(LeetCode)

  • 动态规划

    • class Solution:def maxProduct(self, nums: List[int]) -> int:n = len(nums)dp_max = [float('-inf')] * n  # 表示以nums[i]为底的连续子数组的最大乘积,也可以用pre_max一个变量表示dp_min = [float('inf')] * n  # 表示以nums[i]为底的连续子数组的最小乘积,也可以用pre_min一个变量表示dp_max[0] = dp_min[0] = res = nums[0]for i in range(1, n):# 由于当前可能正可能负,三种取最大/小:当前数,前最大×当前数,前最小×当前数dp_max[i] = max(nums[i], dp_max[i-1] * nums[i], dp_min[i-1] * nums[i])dp_min[i] = min(nums[i], dp_max[i-1] * nums[i], dp_min[i-1] * nums[i])res = max(res, dp_max[i])return res
  • 符号个数

    • 思路参考题解及评论区
    • class Solution:def maxProduct(self, nums: List[int]) -> int:reverse_nums = nums[::-1]# 先按照0分成多个数组,在不同数组里统计奇数个数# 负数个数为偶数,全部相乘,负数个数为奇数,某奇数的前缀乘积或后缀乘积为最大值for i in range(1, len(nums)):nums[i] *= nums[i - 1] or 1   # 前缀乘积(遇到0就重置)reverse_nums[i] *= reverse_nums[i - 1] or 1  # 后缀乘积(遇到0就重置)return max(nums + reverse_nums)  # 一定是前缀乘积和后缀乘积的最大值

416. 分割等和子集 - 力扣(LeetCode)

  • 01背包

    • class Solution:def canPartition(self, nums: List[int]) -> bool:numSum = sum(nums)if numSum % 2 == 1: return False  # 总和为奇数无法等分target = numSum // 2  # 01背包大小dp = [0] * (target + 1)  # dp[j]表示以j为容量的背包装的最大价值for i in range(len(nums)):  # 遍历物品,从头到尾,重量和价值都为nums[i]for j in range(target, nums[i] - 1, -1):  # 遍历背包,从target到nums[i]倒序dp[j] = max(dp[j], dp[j - nums[i]] + nums[i])return dp[target] == target  # 如果target容量的背包刚好能装价值为target,找到分割方法

32. 最长有效括号 - 力扣(LeetCode)

  • 辅助栈

    • 参考题解
    • class Solution:def longestValidParentheses(self, s: str) -> int:st = []  # 栈中存储的是到当前位置暂时不可以构成括号的索引res = 0for i in range(len(s)):# 可以构成括号:栈不空 and 当前字符为'(' and 栈顶字符为'('if st and s[i] == ')' and s[st[-1]] == '(':st.pop()   # 弹出栈顶'('# 与最远不能构成括号的下标计算距离,更新最大长度,注意越界res = max(res, i - (st[-1] if st else - 1)) # 不可以构成括号:栈空 or 当前字符为')' or 栈顶字符为')'else:st.append(i)  # 存入下标return res
  • 动态规划

    •  参考题解

    • class Solution:def longestValidParentheses(self, s: str) -> int:n = len(s)if n <= 1: return 0dp = [0] * n  # dp[i]表示以s[i]结尾的最长有效括号子串res = 0   # 用于更新最大值for i in range(1, n):# (),在dp[i-2]基础上直接延续2个if s[i] == ')' and s[i-1] == '(':           dp[i] = dp[i-2] + 2 if i >= 2 else 2    # 防止越界,dp[0]以前为0# )),先看前一个)匹配多长,再看后一个)能否匹配上(,可以的话就+2elif s[i] == ')' and s[i-1] == ')':         sub_len = dp[i-1]  # 前一个)已经匹配的长度if i-sub_len-1 >= 0 and s[i-sub_len-1] == '(':  # 后一个)要找到(才能匹配上last = dp[i-sub_len-2] if i-sub_len-2 >= 0 else 0  # 找到(之前已经匹配多长,防止越界,dp[0]以前为0dp[i] = dp[i-1] + last + 2  # 前一个)匹配的长度 + 后一个)找到(之前已经匹配的长度 + 2res = max(res, dp[i])  # 更新最大值,没有以上情况dp[i]就是0return res

后言

  • 最后这道困难题真顶啊,要完全搞懂花了不少时间,这两天继续去巩固dp去

相关文章:

【力扣hot100】刷题笔记Day25

前言 这几天搞工作处理数据真是类似我也&#xff0c;还被老板打电话push压力有点大的&#xff0c;还好搞的差不多了&#xff0c;明天再汇报&#xff0c;赶紧偷闲再刷几道题&#xff08;可恶&#xff0c;被打破连更记录了&#xff09;这几天刷的是动态规划&#xff0c;由于很成…...

webpack5零基础入门-4使用webpack处理less文件

1.安装less npm install less -D 2.创建less文件 .box{width: 100px;height: 100px;background: red; } 3.引入less文件并打包 执行npx webpack 报错无法识别less文件 4.安装less-loader并配置 npm install less-loader9 -D 这里指定一下版本不然会因为node版本过低报错 …...

Python机器学习预测+回归全家桶,新增TCN,BiTCN,TCN-GRU,BiTCN-BiGRU等组合模型预测...

截止到本期&#xff0c;一共发了4篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&#xff01; 2.机器学习预测全家桶-Python&#xff…...

一文了解Cornerstone3D中窗宽窗位的3种设置场景及原理

&#x1f506; 引言 在使用Cornerstone3D渲染影像时&#xff0c;有一个常用功能“设置窗宽窗位&#xff08;windowWidth&windowLevel&#xff09;”&#xff0c;通过精确调整窗宽窗位&#xff0c;医生能够更清晰地区分各种组织&#xff0c;如区别软组织、骨骼、脑组织等。…...

部署 LVS(nginx)+keepalived高可用负载均衡集群

目录 一、集群的概述 1、什么是集群 2、普通集群与负载均衡集群 2.1 普通集群&#xff08;Regular Cluster&#xff09; 2.2 负载均衡集群&#xff08;Load Balancing Cluster&#xff09; 2.3 高可用集群&#xff08;High Availability Cluster&#xff09; 2.4 区别 …...

Qt/QML编程之路:fork、vfork、exec、clone的对比及使用(46)

前言: 系统调用system call是OS提供的服务提供接口。系统调用fork()、vfork()、exec()和clone()都用于创建和操作进程。Linux下Qt编程也会用到vfork进行多进程间通信。让我们看一下以下每个系统调用的概述和比较: fork()、vfork()和clone()的工作原理相似,但在处…...

Go语言框架路由Controller控制器设计思路gin路由根据控制器目录分层生成路由地址

Controller设计好处 框架设计用controller分请求路由层级&#xff0c;应用从app目录开始对应请求url路由地址&#xff0c;这样设计师方便开发时候通过请求地址层级快速定位接口方法对应的代码位置。 例如api接口请求路径为&#xff1a;​​http://localhost:8110/​​busines…...

突破编程_C++_设计模式(责任链模式)

1 责任链模式的概念 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为设计模式&#xff0c;它允许对象以链式的方式组织起来&#xff0c;以便对请求进行处理。这种模式为多个对象处理同一请求提供了一个灵活的机制&#xff0c;而无需在发送者和多…...

php开发100问?

什么是 PHP&#xff1f;PHP 是一种什么类型的语言&#xff1f;PHP 的优缺点是什么&#xff1f;如何在服务器上配置 PHP&#xff1f;PHP 中的变量是如何声明和使用的&#xff1f;如何在 PHP 中输出文本和变量&#xff1f;什么是 PHP 的数据类型&#xff1f;如何在 PHP 中实现条件…...

flink实战--Flink任务资源自动化优化

背景 在生产环境Flink任务资源是用户在实时平台端进行配置,用户本身对于实时任务具体配置多少资源经验较少,所以存在用户资源配置较多,但实际使用不到的情形。比如一个 Flink 任务实际上 4 个并发能够满足业务处理需求,结果用户配置了 16 个并发,这种情况会导致实时计算资…...

tsv文件在大数据技术栈里的应用场景

是的&#xff0c;\t 是指制表符&#xff08;tab&#xff09;&#xff0c;它通常用作字段分隔符在 TSV&#xff08;Tab-Separated Values&#xff09;格式的文件中。TSV是一种简单的文本格式&#xff0c;它使用制表符来分隔每一列中的值&#xff0c;而每一行则代表一个数据记录。…...

vscode设置setting.json

{ // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndentation": false, // 重新设定tabsize "editor.tabSize": 2, // #每次保存的时候自动格式化 // "editor.formatOnSave": true, // #每次保存的时候将代码按eslint格式…...

Docker的安装及镜像加速的配置

文章目录 一.切换到root二.卸载旧版docker三.配置docker的yum库四.安装Docker五.Docker的启动和验证六.配置Docker阿里云镜像加速(全程免费) 该文章文章演示在Linux系统中安装docker&#xff0c;Windows安装docker请参考以下文章 Windows系统中安装docker及镜像加速的配置 一…...

AIGC时代IT人的迷茫有解(1):从“商业画布”到“个人画布”

IT人的迷茫和心态调整 最近打开新闻&#xff0c;各种IT老大都在说“AIGC时代&#xff0c;只要会说话&#xff0c;人人都会具备程序员的能力”,身边也有很多程序员朋友也已经在用GPT类的产品编程了。随着AIGC的发展&#xff0c;除了程序员&#xff0c;可能很多职业都会被替代或…...

Qt/QML编程之路:openglwidget和倒车影像的切换(43)

关于如何实现一个基于OpenGL的3d 图形,这个有很多专门的介绍,我在开发中遇到了这么一个问题: 如何实现一个倒车影像的video显示与一个3D物体显示的切换,因为开窗在同样的一个位置,如果车子倒车启动,则需要将原本显示3D的地方切换为视频图像的显示。 class testOpenGl : …...

Spring 初学者遇到的问题

TagLibraryValidator Spring 实战 5.2 中有个表单需要在 jsp 中遍历数组&#xff0c;添加&#xff1a;<% taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c" %>&#xff0c;访问时发现有些问题&#xff1a; java.lang.NoClassDefFoundError…...

前端解决跨域问题( 6种方法 )

本专栏是汇集了一些HTML常常被遗忘的知识&#xff0c;这里算是温故而知新&#xff0c;往往这些零碎的知识点&#xff0c;在你开发中能起到炸惊效果。我们每个人都没有过目不忘&#xff0c;过久不忘的本事&#xff0c;就让这一点点知识慢慢渗透你的脑海。 本专栏的风格是力求简洁…...

Linux 理解进程

目录 一、基本概念 二、描述进程-PCB 1、task_struct-PCB的一种 2、task_ struct内容分类 三、组织进程 四、查看进程 1、ps指令 2、top命令 3、/proc文件系统 4、在/proc文件中查看指定进程 5、进程的工作目录 五、通过系统调用获取进程标示符 1、getpid()/get…...

鸿蒙App基础

基础说明 .1、应用模型 .1.1、构成要素 应用组件 应用组件是应用的基本组成单位&#xff0c;是应用的运行入口。用户启动、使用和退出应用过程中&#xff0c;应用组件会在不同的状态间切换&#xff0c;这些状态称为应用组件的生命周期。应用组件提供生命周期的回调函数&…...

算法部署优化工程师面试题整理

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;C/C面试整理 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 目录 整体情况简介 高性能计算基础 AI 框架知识 算…...

如何快速实现多平台直播推流:OBS插件完整指南

如何快速实现多平台直播推流&#xff1a;OBS插件完整指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 想要轻松实现多平台直播&#xff0c;同时向多个平台推送高清直播流&#xff1f…...

点云自监督学习新范式:掩码自编码器(MAE)的架构设计与实战解析

1. 点云自监督学习为何需要MAE&#xff1f; 点云数据在自动驾驶、机器人导航、工业检测等领域越来越重要&#xff0c;但标注成本高得吓人。我去年参与过一个室内场景重建项目&#xff0c;光是标注1000帧点云就花了团队两周时间。这时候自监督学习就成了救命稻草——它能让模型从…...

模拟IC设计进阶指南:MOS开关电路的非理想特性与优化策略

1. MOS开关电路的非理想特性揭秘 第一次用MOS管做开关电路时&#xff0c;我天真地以为它就是个完美的电子开关——导通时零电阻&#xff0c;关断时完全绝缘。直到在采样保持电路里看到信号波形出现诡异的台阶&#xff0c;才意识到教科书里的理想模型都是"卖家秀"。实…...

无网络环境下 MySQL 5.7 完整离线部署指南

1. 为什么需要离线安装MySQL&#xff1f; 在企业级应用场景中&#xff0c;经常会遇到服务器处于严格的内网隔离环境&#xff0c;无法直接连接互联网下载软件包的情况。我曾在某金融机构的数据中心项目中&#xff0c;遇到过核心数据库服务器完全物理隔离的环境&#xff0c;当时就…...

ThinkPHP 8+CPU的生命周期的庖丁解牛

它的本质是&#xff1a;理解 PHP 代码&#xff08;高级语言&#xff09;如何被编译为 Opcode&#xff0c;进而被 Zend 引擎解释执行&#xff0c;最终转化为 CPU 能够理解的机器指令&#xff08;Machine Code&#xff09;&#xff0c;并在 CPU 的流水线、缓存&#xff08;L1/L2/…...

丹青识画系统与STM32嵌入式项目结合:智能相框原型开发

丹青识画系统与STM32嵌入式项目结合&#xff1a;智能相框原型开发 1. 项目缘起&#xff1a;当老相框遇上新AI 你有没有想过&#xff0c;家里墙上那个安安静静的相框&#xff0c;除了展示照片&#xff0c;还能做些什么&#xff1f; 我手头正好有几块闲置的STM32开发板和几块小…...

掌握Node.js开发的102个终极最佳实践:从新手到专家的完整指南

掌握Node.js开发的102个终极最佳实践&#xff1a;从新手到专家的完整指南 【免费下载链接】nodebestpractices :white_check_mark: The Node.js best practices list (July 2024) 项目地址: https://gitcode.com/GitHub_Trending/no/nodebestpractices 你是否曾经在Node…...

如何用本地OCR工具快速提取视频硬字幕?Video-subtitle-extractor完整指南

如何用本地OCR工具快速提取视频硬字幕&#xff1f;Video-subtitle-extractor完整指南 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕…...

投放Facebook广告需要多少预算?又如何提升转化率?

随着这两年独立站市场的风靡&#xff0c;吸引了大量卖家的涌入。我们都知道&#xff0c;独立站不像平台是自带流量的&#xff0c;需要我们自己去推广引流。所以&#xff0c;我们在投放广告的时候&#xff0c;一定会优先考虑广告预算的问题。很多卖家也会问到&#xff1a;我们每…...

硬核万字图解 MySQL 表空间、Tables、Index、双写缓冲、Redo Log、Undo Log 原理

在数据库领域&#xff0c;MySQL 的 InnoDB 存储引擎以其高性能、高可靠性和事务支持著称。 MySQL innoDB 引擎架构可以分为两大块&#xff0c;分别是内存架构&#xff08;In-Memory Structure&#xff09;和磁盘架构&#xff08;On-Disk Structure&#xff09;。 图 1 书接上…...