Day 49 卡玛笔记

这是基于代码随想录的每日打卡

1143. 最长公共子序列

给定两个字符串 text1text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

  • 例如,"ace""abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。

两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

示例 1:

输入:text1 = "abcde", text2 = "ace" 
输出:3  
解释:最长公共子序列是 "ace" ,它的长度为 3 。

示例 2:

输入:text1 = "abc", text2 = "abc"
输出:3
解释:最长公共子序列是 "abc" ,它的长度为 3 。

示例 3:

输入:text1 = "abc", text2 = "def"
输出:0
解释:两个字符串没有公共子序列,返回 0 。

动态规划

class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:dp=[[0 for j in range(len(text2)+1)] for i in range(len(text1)+1)]# i和j表示的都是第几个字符  for i in range(1,len(text1)+1):for j in range(1,len(text2)+1):if text1[i-1]==text2[j-1]:dp[i][j]=dp[i-1][j-1]+1else:# 当前字符不匹配,表示跳过text1的当前字符,寻找text1前一个字符和text2的最长公共子序列;跳过text2的当前字符,寻找text2前一个字符和text1的最长公共子序列dp[i][j]=max(dp[i-1][j],dp[i][j-1])return dp[-1][-1]

运行结果

在这里插入图片描述



1035. 不相交的线

在两条独立的水平线上按给定的顺序写下 nums1nums2 中的整数。

现在,可以绘制一些连接两个数字 nums1[i]nums2[j] 的直线,这些直线需要同时满足:

  • nums1[i] == nums2[j]
  • 且绘制的直线不与任何其他连线(非水平线)相交。

请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。

以这种方法绘制线条,并返回可以绘制的最大连线数。

示例 1:

img

输入:nums1 = [1,4,2], nums2 = [1,2,4]
输出:2
解释:可以画出两条不交叉的线,如上图所示。 
但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。

示例 2:

输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]
输出:3

示例 3:

输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]
输出:2

动态规划

class Solution:def maxUncrossedLines(self, nums1: List[int], nums2: List[int]) -> int:# 本质是上一题的求最长公共子序列问题dp=[[0 for j in range(len(nums2)+1)] for i in range(len(nums1)+1)]# i和j表示的都是第几个字符  for 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]+1else:dp[i][j]=max(dp[i-1][j],dp[i][j-1])return dp[-1][-1]

运行结果

在这里插入图片描述



53. 最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

动态规划

class Solution:def maxSubArray(self, nums: List[int]) -> int:# dp[i]表示以下标i为结尾的最大连续子数组和dp=[0 for i in range(len(nums))]dp[0]=nums[0]for i in range(1,len(nums)):dp[i]=max(dp[i-1]+nums[i],nums[i])return max(dp)

运行结果

在这里插入图片描述



392. 判断子序列

给定字符串 st ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace""abcde"的一个子序列,而"aec"不是)。

示例 1:

输入:s = "abc", t = "ahbgdc"
输出:true

示例 2:

输入:s = "axc", t = "ahbgdc"
输出:false

动态规划

class Solution:def isSubsequence(self, s: str, t: str) -> bool:dp=[[0 for j in range(len(t)+1)] for i in range(len(s)+1)]# i和j表示的都是第几个字符  for i in range(1,len(s)+1):for j in range(1,len(t)+1):if s[i-1]==t[j-1]:dp[i][j]=dp[i-1][j-1]+1else:# 当字符不匹配时,我们只需要继承 t 的前 j-1 个字符的状态,# 因为 s 的前 i 个字符是否是 t 的子序列,不依赖于 t 的当前字符。dp[i][j]=dp[i][j-1]if dp[-1][-1]==len(s):return Truereturn False

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23462.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重新求职刷题DAY18

1.513. 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 输入: root [2,1,3] 输出: 1思路: 这…

因子数个数之和

BDAA实验室的保研机试一道题,有时间限制。 1. 求每个数的因子数再求和:超时 2. 思想转换:统计每个数在 1 到 N 中作为因子出现的次数,从而避免对每个数进行因子分解,将时间复杂度优化到O(N)。( 没想到 :( …

『obsidian』obsidian接入DeepSeek模型的完整说明

一、插件概览 🏆Copilot For Obsidian 开发者:loganc yang | 第 5 届 Ob 宝石奖 LLM 类冠军 核心功能:内置多模态大语言模型,支持自定义模型扩展,实现笔记智能交互预置模型:Claude、GPT-4、Gemini 系列特…

基于YOLO11深度学习的苹果叶片病害检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 😃,生活加油 我站在人潮中央,思考这日日重复的生活。我突然想&#xff0c…

Redis分布式锁故障处理:当Redis不可用时的应对策略

Redis分布式锁故障处理:当Redis不可用时的应对策略 在分布式系统中,Redis因其高性能和丰富的特性常被用于实现分布式锁。但当加锁过程中Redis服务不可用时,系统将面临严重挑战。本文将深入探讨这一问题,并提供多维度解决方案。 目…

番外·卓伊凡参加 [2025年2月HDD·鸿蒙赋能交流会·成都站] 线下活动的心得体会-优雅草卓伊凡

番外卓伊凡参加 [2025年2月HDD鸿蒙赋能交流会成都站] 线下活动的心得体会-优雅草卓伊凡 背景 2025 年 2 月 22 日,HDD・鸿蒙赋能交流会将在北京、长沙、成都、南京、雄安同步开展。此次交流会由 HDG 组织者牵头,携手 HUAWEI DEVELOPER EXPERTS&#xf…

vue-fastapi-admin 部署心得

vue-fastapi-admin 部署心得 这两天需要搭建一个后台管理系统,找来找去 vue-fastapi-admin 这个开源后台管理框架刚好和我的技术栈所契合。于是就浅浅的研究了一下。 主要是记录如何基于原项目提供的Dockerfile进行调整,那项目文件放在容器外部&#xf…

永洪科技旗下BI产品,成功入选“金融信创优秀解决方案“

3月28日至29日,金融信创生态实验室在京举办金融信创解决方案研讨会,发布第三期金融信创优秀解决方案、实验室推荐解决方案,启动解决方案的分享活动。 永洪科技凭借旗下的敏捷BI数据分析平台,成功入选“金融信创优秀解决方案&…

Android之APP更新(通过接口更新)

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限申请2.activity实现3.有版本更新弹框UpdateappUtilDialog4.下载弹框DownloadAppUtils5.弹框背景图 总结 前言 对于做Android的朋友来说,APP更新功能再常见不过了,因为平台更新审核时间较长&am…

PHP课程预约小程序源码

📱 课程预约小程序:为您专属定制的便捷预约新体验 在这个快节奏的时代,我们深知每一位瑜伽爱好者、普拉提追随者以及培训机构管理者对高效、便捷服务的迫切需求。因此,我们匠心独运,推出了一款基于PHPUniApp框架开发的…

WebXR教学 02 配置开发环境

默认操作系统为Windows 1.VS Code VS Code 是一款轻量级、功能强大的代码编辑器,适用于多种编程语言。 下载 步骤 1:访问 VS Code 官方网站 打开浏览器(如 Chrome、Edge 等)。 在地址栏输入以下网址: https://code.v…

unity学习51:所有UI的父物体:canvas画布

目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载,导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas,UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…

JavaWeb开发入门:从前端到后端的完整流程解析

一、JavaWeb简介 1、C/S 客户端/服务器结构 2、B/S(Browser/Server,浏览器/服务器)结构 二、开发环境搭建 1. 安装Tomcat--一个小型的web容器。 2. 在eclipse中配置tomcat创建项目 三、JavaWeb开发流程 1. 前端页面设计 2. 后端逻辑…

Linux 常见命令全解析

一、文件操作命令 1. ls ls是列出目录内容的命令。简单输入ls,会展示当前目录下的文件和目录列表。想要获取更详细的信息,比如文件权限、所有者、大小、修改时间等,使用ls -l。若要显示所有文件,包括以点(.&#xff…

unordered_set和unordered_map的使用

Hello,今天我来为大家介绍一下前几年才刚刚新出的两个容器——unordered_map和unordered_set,这两个容器属于是map系列和set系列中的一种,和map/set不同的是它们的底层,map/set的底层是红黑树,而unordered_map/unorder…

【每日八股】计算机网络篇(一):概述

OSI 的 7 层网络模型? OSI(Open Systems Interconnection,开放互联系统)是由国际标准化组织(ISO)提出的一种网络通信模型。 自上而下,OSI 可以被分为七层,分别是:应用层…

DeepSeek 提示词:高效的提示词设计

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

HarmonyOS简

文章为官方教程以及自己的部分理解,用于上下班的查看学习。官方视频教程地址:HarmonyOS应用开发者基础认证-华为开发者学堂 (huawei.com) 应用发开的机遇、挑战和趋势 带来的问题 问题:万物互联,智能设备从几十亿手机拓展到数百…

conda 基本命令

1、查询当前所有的环境 conda env list 2、创建虚拟环境 conda create -n 环境名 [pythonpython版本号] 其中[pythonpython版本号]可以不写 conda create -n test python3.12 我们输入conda env list看到我们的环境创建成功了,但是发现他是创建在我们默认的C盘的…