Day55 动态规划 part15

Day55 动态规划 part15

392.判断子序列

我的思路:
自己还是只能想到双指针法

解答:

class Solution {public boolean isSubsequence(String s, String t) {if(s.length() == 0) {return true;}if(s.length() > t.length() || t.length() == 0) {return false;}char[] sc = s.toCharArray();char[] tc = t.toCharArray();int s1, t1 = 0;for(s1 = 0, t1 = 0; s1 < sc.length && t1 < tc.length; t1++) {if(tc[t1] == sc[s1]) {s1++;}}if(s1 == sc.length) {return true;}return false;}
}

如果用动态规划的思想解题
状态转移方程:
爱来自G哥

class Solution {public boolean isSubsequence(String s, String t) {int slen = s.length();int tlen = t.length();char[] sc = s.toCharArray();char[] tc = t.toCharArray();int[][] dp = new int[slen + 1][tlen + 1];for(int i = 1; i <= slen; i++) {for(int j = 1; j <= tlen; j++) {if(sc[i - 1] == tc[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;}else {dp[i][j] = dp[i][j - 1];}}}return dp[slen][tlen] == slen;}
}

115.不同的子序列

我的思路:
跟上一题代码其实差不多,但是现在s是母串,t是待匹配的子串
所以这道题我的dp定义为dp[t.length() + 1][s.length() + 1]
跟上一题状态转移方程几乎差不多
G哥
i == j(字符相等时)
dp[i][j] = dp[i - 1][j - 1] + 1 --> 现在不是+1,是 + dp[i][j - 1]
我们可以选择不使用 s 的第 j 个字符来构成子序列,那么这种情况的数量就是 dp[i][j - 1]
我们也可以选择使用 s 的第 j 个字符来构成子序列,那么这种情况的数量就是 dp[i - 1][j - 1]

i != j(字符串不相等时)
dp[i][j] = dp[i ][j - 1]

解答:

class Solution {public int numDistinct(String s, String t) {int[][] dp = new int[t.length() + 1][s.length() + 1];for(int i = 1; i <= t.length(); i++) {dp[i][0] = 0;}for(int j = 0; j <= s.length(); j++) {dp[0][j] = 1;}for(int i = 1; i <= t.length(); i++) {for(int j = 1; j <= s.length(); j++) {if(t.charAt(i - 1) == s.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1] + dp[i][j - 1];}else {dp[i][j] = dp[i][j - 1];}}}return dp[t.length()][s.length()];}
}

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

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

相关文章

性能再升级!UNet+注意力机制,新SOTA分割准确率高达99%

UNet结合注意力机制能够有效提升图像分割任务的性能。 具体来说&#xff0c;通过将注意力模块集成到UNet的架构中&#xff0c;动态地重新分配网络的焦点&#xff0c;让其更集中在图像中对于分割任务关键的部分。这样UNet可以更有效地利用其跳跃连接特性&#xff0c;以精细的局…

VMware安装Linux虚拟机(rocky9)

软件准备&#xff1a; VMware虚拟机ISO系统镜像文件 选择创建虚拟机→典型→下一步→点击稍后安装操作系统 选择Linux系统和对应版本 输入虚拟机名称和选择保存位置 设置磁盘大小 根据需要自定义硬件配置→完成 然后点击编辑虚拟机设置→CD/DVD→选择ISO镜像 然后开启虚拟机→…

动态规划|343.整数拆分

力扣题目链接 class Solution { public:int integerBreak(int n) {vector<int> dp(n 1);dp[2] 1;for (int i 3; i < n ; i) {for (int j 1; j < i / 2; j) {dp[i] max(dp[i], max((i - j) * j, dp[i - j] * j));}}return dp[n];} }; 思路 看到这道题目&…

【GD32】 2.39 FR1002人脸识别模块

2.39 FR1002人脸识别模块 FR1002人脸识别模组解决方案以高性能应用处理器为硬件平台&#xff0c;配合双目传感器进行活体检测&#xff0c;具有启动速度快、金融级的识别能力、超低使用功耗等特点。凭借超低功耗、强大的运算速度&#xff0c;在多种应用领域中&#xff0c;为各行…

关于《CS创世 SD NAND》的技术学习分享

最近发现一个好玩的东西《CS创世 SD NAND》&#xff0c;带大家一起体验一下。 本文引用了部分厂家产品资料及图像&#xff0c;如有侵权&#xff0c;请及时联系我删除&#xff0c;谢谢。 《CS创世 SD NAND》官方网站&#xff1a;http://www.longsto.com/ 什么是CS创世 SD NAND呢…

0基础刷图论最短路 1(从ATcoder 0分到1800分)

ATC最短路1 &#xff08;本文难度rated 0~ 1000&#xff09; 题目来源&#xff1a;Atcoder 题目收集&#xff1a; https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path &#xff08;里面按tag分类好了Atcoder的所有题目&#xff0c;类似cf&#xff09; &#xff08;…

Linux 关闭交换分区(swap)

安装Doris、ElasticSearch等服务的时候&#xff0c;Linux交换分区会给这些服务带来很严重的性能问题&#xff0c;需要在安装之前禁用交换分区。 1 查看交换分区信息 首先&#xff0c;使用 swapon --show 或 cat /proc/swaps 命令来查看当前的交换分区状态。它会列出所有当前启…

【300套】基于Springboot+Vue的Java实战开发项目(附源码+演示视频+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f9e1;今天给大家分享300的Java毕业设计&#xff0c;基于Springbootvue框架&#xff0c;这些项目都经过精心挑选&#xff0c;涵盖了不同的实战主题和用例&#xff0c;可做毕业…

【vue】用vite创建vue项目

前置要求 要有Node.js 1. 用vite创建vue项目 在cmd中&#xff0c;进入一个文件夹 在文件资源管理器上面的文件目录中&#xff0c;输入cmd&#xff0c;回车在cmd中通过cd命令进入对应文件夹 创建项目 npm create vitelatest # 创建项目创建项目过程中的一些选项 Ok to pro…

Fake-SMS恶意软件混淆分析——低代码的时代来了

写在前面的话 在安全社区中&#xff0c;只要聊到开源代码使用方面的话题&#xff0c;就肯定会聊到安全问题。虽然使用开源代码通常会被认为是安全的&#xff0c;但我们需要清楚的是&#xff0c;与非FOSS&#xff08;自由与开源软件&#xff09;解决方案相比&#xff0c;开源软…

Hive on spark源码编译与调优

文章目录 一、编译环境准备1、hadoop和hive安装2、编译环境搭建3、Hive on Spark配置 二、Hive相关问题1、Hadoop和Hive的兼容性问题1.1 问题描述1.2 解决思路1.3 修改并编译Hive源码 2、Hive插入数据StatsTask失败问题3.1 问题描述3.2 解决思路 3、Hive和Spark兼容性问题3.1 问…

【Android surface 】二:源码分析App的surface创建过程

文章目录 画布surfaceViewRoot的创建&setView分析setViewrequestLayoutViewRoot和WMS的关系 activity的UI绘制draw surfacejni层分析Surface无参构造SurfaceSessionSurfaceSession_init surface的有参构造Surface_copyFromSurface_writeToParcelSurface_readFromParcel 总结…

【Hive上篇: 一篇文章带你使用Hive!深入了解Hive!学会Hive!】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本篇文章主要分享的是大数据开发中hive的相关技术&#xff0c;什么是Hive&#xff1f;怎么使用Hive&#xff1f;怎么安装部署&#xff1f;希望大家看完这篇文章会有所帮助。也希望大家能够…

运筹优化库Qaekwy入门——以指派问题为例

文章目录 1. 什么是 Qaekwy?2. 安装方法(Windows)3. 指派问题3.1 描述问题3.2 建立问题模型3.3 模型求解1. 什么是 Qaekwy? 在 2023 年 9 月 Github 上开源了一个新的优化求解器 Qaekwy,根据官方对 Qaekey 的介绍,该求解器严格来说是一个 Python 客户端,通过 Python 接…

Depth maps转点云

前言 本文主要记录一下如何可视化相机位姿&#xff0c;如何用Blender得到的深度图反投影到3D空间&#xff0c;得到相应的点云。 Refernce https://github.com/colmap/colmap/issues/1106 https://github.com/IntelRealSense/librealsense/issues/12090 https://medium.com/yod…

【详细讲解下Photoshop】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

大模型推理过程

在人工智能领域&#xff0c;尤其是在机器学习和深度学习中&#xff0c;“推理”&#xff08;Inference&#xff09;是指使用训练好的模型来进行预测或决策的过程。在模型被训练以学习数据的特征和模式之后&#xff0c;推理就是将实际的数据输入模型&#xff0c;以获得输出结果的…

鸿蒙 Failed :entry:default@CompileResource...

Failed :entry:defaultCompileResource... media 文件夹下有文件夹或者图片名称包含中文字符 rawfile 文件夹下文件名称、图片名称不能包含中文字符

地理空间分析中的深度学习应用

深度学习与地理信息系统 (GIS) 的结合彻底改变了地理空间分析和遥感的格局。这种结合将遥感和地理空间分析领域带到了全球研究人员和科学家的前沿。 深度学习是机器学习的一个复杂子集&#xff08;更多关于机器学习的内容&#xff0c;请参阅我的其他文章&#xff09;&#xff0…

【JVM】JVM调优可配置参数及配置时机和原则

接着上一篇不同场景下JVM调优手段及代码优化建议,接着来JVM调优可配置参数及配置时机和原则。以在JDK 8为例&#xff0c;JVM提供了一系列的可配置参数&#xff0c;这些参数可以帮助开发者和系统管理员针对不同的应用场景进行性能调优。以下是按维度划分的一些关键参数及其用途、…