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

Day50 算法记录| 动态规划 17(子序列)

这里写目录标题

  • 647. 回文子串
  • 516.最长回文子序列
  • 总结

647. 回文子串

1.动态规划和2.中心扩展
这个视频是基于上面的视频的代码

方法1:动态规划
布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。
dp[i][j] = (c[i] = c[j]) &&( (j-i<=2) || dp[i+1][j-1] );
在这里插入图片描述

class Solution {public int countSubstrings(String s) {char[] c = s.toCharArray();int n = c.length;boolean[][] dp = new  boolean[n][n];int count =0;for(int j=0;j<n;j++){for(int i=0;i<=j;i++){dp[i][j] = (c[i] == c[j]) &&( (j-i<=2) || dp[i+1][j-1] );if(dp[i][j]) count++;}}
return count;}
}

方法2:中心扩展法
只有两种情况:1.以单个字母为中心 2. 以两个字母为中心
在这里插入图片描述

class Solution {int count =0;public int countSubstrings(String s) {for(int i=0;i<s.length();i++){helper(s,i,i);helper(s,i,i+1);}return count;}public void helper(String s, int left, int right){while(left>=0&&right<s.length()&&s.charAt(left) == s.charAt(right)){count++;left--;right++;}}
}

516.最长回文子序列

两种思路:

思路一:求当前序列 和 反转之后的 最长公共子序列
就是这道题1146一摸一样了
dp[i][j] 表示s1的前i个字符和s2的前j个字符最长…

class Solution {public int longestPalindromeSubseq(String s) {char[] A = s.toCharArray();char[] B = new char[A.length];for(int i=0;i<A.length;i++){B[i] = A[A.length -1-i];}int[][] dp = new int[A.length+1][A.length+1];for(int i=1;i<=A.length;i++){for(int j =1;j<=A.length;j++){if(A[i-1] == B[j-1]){dp[i][j] = dp[i-1][j-1]+1;}else{dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]);}}}return dp[A.length][B.length];}
}

思路二:区间DP
子序列的本质就是选与不选
dp[i][j]:字符串s在[i, j]范围内最长的回文子序列的长度为dp[i][j]。

在这里插入图片描述

在这里插入图片描述

超出时间限制的递归
在这里插入图片描述

将递归变成循环:

class Solution {public int longestPalindromeSubseq(String s) {char[] A = s.toCharArray();int n = A.length;int[][] dp = new int[n][n];for(int i = n-1;i>=0;i--){dp[i][i] =1;  //2. i==j for(int j=i+1;j<n;j++){ //3.j>iif(A[i]== A[j]){dp[i][j] = dp[i+1][j-1]+2;}else{dp[i][j] = Math.max(dp[i+1][j],dp[i][j-1]);}}}return dp[0][n-1];}
}

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

Day50 算法记录| 动态规划 17(子序列)

这里写目录标题 647. 回文子串516.最长回文子序列总结 647. 回文子串 1.动态规划和2.中心扩展 这个视频是基于上面的视频的代码 方法1:动态规划 布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文子串&#xff0c;如…...

RabbitMQ:概念和安装,简单模式,工作,发布确认,交换机,死信队列,延迟队列,发布确认高级,其它知识,集群

1. 消息队列 1.0 课程介绍 1.1.MQ 的相关概念 1.1.1.什么是MQ MQ(message queue&#xff1a;消息队列)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是message 而已&#xff0c;还是一种跨进程的通信机制…...

小研究 - 基于解析树的 Java Web 灰盒模糊测试(二)

由于 Java Web 应用业务场景复杂, 且对输入数据的结构有效性要求较高, 现有的测试方法和工具在测试Java Web 时存在测试用例的有效率较低的问题. 为了解决上述问题, 本文提出了基于解析树的 Java Web 应用灰盒模糊测试方法. 首先为 Java Web 应用程序的输入数据包进行语法建模创…...

对于现有的分布式id发号器的思考 id生成器 雪花算法 uuid

在工作过程中接触了很多id生成策略&#xff0c;但是有一些问题 雪花id 强依赖时钟&#xff0c;对于时钟回拨无法很好解决 tinyid 滴滴开源&#xff0c;依赖mysql数据库&#xff0c;自增&#xff0c;无业务属性 uuid 生成是一个字符串没有顺序&#xff0c;数据库索引组织数据…...

jmeter中json提取器,获取多个值,并通过beanshell组成数组

jmeter中json提取器介绍 特别说明&#xff1a;**Compute concatenation var(suffix_ALL)&#x1f617;*如果找到许多结果&#xff0c;则插件将使用’ &#xff0c; 分隔符将它们连接起来&#xff0c;并将其存储在名为 _ALL的var中 json提取器调试 在查看结果树中选择JSON Pat…...

通过nvm工具快捷切换node.js版本、以及nvm的安装

使用nvm可以实现多个Node.js版本之间切换 步骤目录&#xff1a; 先卸载掉本系统中原有的node版本 去github上下载nvm安装包 安装node 常用的一些nvm命令 1、先卸载掉本系统中原有的node版本 2、去github上下载nvm安装包 https://github.com/coreybutler/nvm-windows/re…...

企业如何搭建矩阵内容,才能真正实现目的?

当下&#xff0c;新媒体矩阵营销已成为众多企业的营销选择之一&#xff0c;各企业可以通过新媒体矩阵实现扩大品牌声量、维持用户关系、提高销售业绩等不同的目的。 而不同目的的矩阵&#xff0c;它的内容运营模式会稍有差别&#xff0c;评价体系也会大不相同。 企业在运营某类…...

Arduino驱动MQ5模拟煤气气体传感器(气体传感器篇)

目录 1、传感器特性 2、硬件原理图 3、驱动程序 MQ5气体传感器,可以很灵敏的检测到空气中的液化气、天然气、煤气等气体,与Arduino结合使用,可以制作火灾液化气、天然气、煤气泄露报警等相关的作品。 1、传感器特性 MQ5用于消费和工业行业中气体泄漏检测设备,该传感器适…...

Mongodb安装(Centos7)

1. 下载 MongoDB: The Developer Data Platform | MongoDB 2. 安装 上传至服务器 解压 tar -zxvf mongodb-linux-x86_64-rhel70-5.0.19.tgz 移动 mv mongodb-linux-x86_64-rhel70-5.0.19 /usr/local/mongodb 3. 配置 vim /etc/profile # set mongodb configuration expor…...

Python 批量处理JSON文件,替换某个值

Python 批量处理JSON文件&#xff0c;替换某个值 直接上代码&#xff0c;替换key TranCode的值 New 为 Update。输出 cancel忽略 import json import os import iopath D:\\Asics\\850\\202307 # old path2 D:\\test2 # new dirs os.listdir(path) num_flag 0 for file…...

凯迪正大—SF6泄漏报警装置的主要特点

SF6泄漏报警系统主要特点 ① 系统采用声速原理&#xff0c;可定量、实时在线测量SF6泄漏气体含量&#xff0c;克服了传统测量方法如负电晕放电法和卤素传感器法只能定性判别是否越限的缺陷&#xff0c;能够准确得到气体中SF6含量。 ② 系统采用双差分处理方法&#xff0c;有效…...

适配器模式与装饰器模式对比分析:优雅解决软件设计中的复杂性

适配器模式与装饰器模式对比分析&#xff1a;优雅解决软件设计中的复杂性 在软件设计中&#xff0c;我们常常面临着需要将不同接口或类协调工作的情况&#xff0c;同时还要满足灵活性和可扩展性的需求。为了应对这些挑战&#xff0c;适配器模式和装饰器模式应运而生&#xff0c…...

idea使用protobuf

本文参考&#xff1a;https://blog.csdn.net/m0_37695902/article/details/129438549 再次感谢分享 什么是 protobuf &#xff1f; Protocal Buffers(简称protobuf)是谷歌的一项技术&#xff0c;用于结构化的数据序列化、反序列化。 由于protobuf是跨语言的&#xff0c;所以用…...

【深度学习_TensorFlow】误差函数

写在前面 搭建完网络层后&#xff0c;在每层网络中都要进行前向计算&#xff0c;下一步就是选择合适的误差函数来计算误差。其中均方差函数和交叉熵函数在深度学习中比较常见&#xff0c;均方差函数主要用于回归问题&#xff0c;交叉熵函数主要用于分类问题。 写在中间 均方差…...

mysql按照日期分组统计数据

目录 前言按天统计按周统计按月统计按年统计date_format参数 前言 mysql的date_format函数想必大家都使用过吧&#xff0c;一般用于日期时间转化 # 例如 select DATE_FORMAT(2023-01-01 08:30:50,%Y-%m-%d %H:%i:%s) # 可以得出 2023-01-01 08:30:50# 或者是 select DATE_FOR…...

19 | 分类模型评估指标

文章目录 Python分类模型评估指标准确率(Accuracy)精确率(Precision)召回率(Recall)F1值(F1 Score)混淆矩阵(Confusion Matrix)ROC曲线和AUC值1. 准备数据集2. 初始化并训练逻辑回归模型3. 获取预测概率并计算ROC曲线和AUC值4. 绘制ROC曲线5. 整合代码结论Python分类…...

【Pycharm2022.2.1】python编辑器最新版安装教程(包含2017-2022的所有版本win/mac/linux)

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 永久安装 Pycharm&#xff08;2017-2022的win/mac/linux所有版本&#xff09;/ IntelliJ IDEA也可以, 按照本文教程所写的&#xff0c;具体步骤跟着下面的图文教程一步一步来就行&#xff0c;一分钟即可搞定&#xff0c;过…...

深度学习-相关概念

Adam优化器 Adam&#xff0c;Adaptive Moment Estimation&#xff0c;自适应矩估计。是2014年提出的一种万金油式的优化器&#xff0c;使用起来非常方便&#xff0c;梯度下降速度快&#xff0c;但是容易在最优值附近震荡。竞赛中性能会略逊于SGD&#xff0c;毕竟最简单的才是最…...

眼科医生推荐的台灯 护眼台灯买什么好?

我家孩子需要一个护眼灯&#xff0c;就请教了我的一个医生朋友。大家都知道医生白天对着电脑长时间的工作&#xff0c;晚上还要看书&#xff0c;查文献&#xff0c;写论文&#xff0c;选一个对眼睛友好的高质量护眼台灯对他们是刚需&#xff0c;同时又是医生&#xff0c;所以他…...

如何使用 ChatGPT 为 Midjourney 或 DALL-E 等 AI 图片生成提示词

人工智能为创意产业开辟了一个充满可能性的全新世界。人工智能最令人兴奋的应用之一是生成独特且原创的艺术品。Midjourney 和 DALL-E 是人工智能生成艺术的两个突出例子&#xff0c;吸引了艺术家和艺术爱好者的注意。在本文中&#xff0c;我们将探索如何使用 ChatGPT 生成 AI …...

科研团队必备:Hunyuan-MT-7B快速部署与多语言评测指南

科研团队必备&#xff1a;Hunyuan-MT-7B快速部署与多语言评测指南 1. 为什么选择Hunyuan-MT-7B 在全球化科研合作日益频繁的今天&#xff0c;语言障碍成为许多团队面临的首要挑战。传统翻译工具要么支持语种有限&#xff0c;要么对专业术语处理不佳&#xff0c;而Hunyuan-MT-…...

Pixel Couplet Gen实战案例:某AI教育平台春节特训营结业证书像素春联

Pixel Couplet Gen实战案例&#xff1a;某AI教育平台春节特训营结业证书像素春联 1. 项目背景与创意来源 春节作为传统节日&#xff0c;春联是不可或缺的文化元素。某AI教育平台在举办春节特训营时&#xff0c;希望为学员提供独特的结业证书形式。传统纸质证书缺乏互动性和创…...

7种Prompt优化技巧实现大模型输出精度提升

在大模型应用落地的过程中&#xff0c;很多使用者会遇到输出质量不稳定的问题&#xff1a;明明输入了需求&#xff0c;却得到偏离主题、逻辑混乱或不符合格式的结果。这背后的核心原因往往不是模型能力不足&#xff0c;而是提示词&#xff08;Prompt&#xff09;的设计没有精准…...

我用 AI 辅助开发了一系列小工具():文件提取工具窝

从0构建WAV文件&#xff1a;读懂计算机文件的本质 虽然接触计算机有一段时间了&#xff0c;但是我的视野一直局限于一个较小的范围之内&#xff0c;往往只能看到于算法竞赛相关的内容&#xff0c;计算机各种文件在我看来十分复杂&#xff0c;认为构建他们并能达到目的是一件困难…...

【大模型工程化评估黄金标准】:20年AI架构师首次公开7大核心指标与落地避坑指南

第一章&#xff1a;大模型工程化评估指标体系构建指南 2026奇点智能技术大会(https://ml-summit.org) 构建面向生产环境的大模型评估指标体系&#xff0c;需兼顾模型能力、系统性能、业务适配性与合规可持续性四大维度。脱离工程落地场景的纯学术指标&#xff08;如零样本准确…...

ESP32芯片对比

文章目录对比维度ESP32ESP32-C3ESP32-S3ESP32-P4芯片架构Xtensa LX6 双核 32位处理器RISC-V 32位单核处理器Xtensa LX7 双核 32位处理器RISC-V 双核&#xff08;HP&#xff09; 单核&#xff08;LP&#xff09;大小核架构主频最高 240 MHz最高 160 MHz最高 240 MHzHP核 400 MHz…...

保姆级教程:用YOLOv5s+FFmpeg+mediamtx搭建一个实时视频监控检测系统(附完整代码)

从零构建智能视频监控系统&#xff1a;YOLOv5与流媒体技术深度整合指南 引言&#xff1a;当计算机视觉遇见流媒体 在数字化安防需求爆发的今天&#xff0c;传统监控系统正面临智能化升级的转折点。想象一下&#xff1a;当仓库管理员需要实时掌握货架商品变动&#xff0c;当实验…...

Python FastAPI 高并发项目结构

Python FastAPI 高并发项目结构解析 在当今高并发的互联网应用中&#xff0c;选择高效的框架和合理的项目结构至关重要。Python的FastAPI凭借其异步支持、高性能和简洁的语法&#xff0c;成为构建高并发服务的理想选择。仅靠框架本身无法充分发挥其潜力&#xff0c;合理的项目…...

【GD32开发】深入解析GD32F103 TIMER0 PWM死区时间配置与优化

1. PWM死区时间基础概念与GD32特性 PWM死区时间是电机控制和电源转换系统中的关键参数。简单来说&#xff0c;它就是在互补PWM信号切换时插入的一个短暂延迟&#xff0c;防止上下桥臂同时导通造成短路。想象一下十字路口的红绿灯切换时&#xff0c;会设置几秒的全红灯时间避免车…...

从频谱‘折叠’到信号‘还原’:图解欠采样原理,并用Python仿真带你避开镜像与混叠的坑

从频谱折叠到信号还原&#xff1a;Python实战欠采样与抗混叠技术 当你在示波器上观察一个高频信号时&#xff0c;是否想过为什么我们能用相对较低的采样率准确捕获它&#xff1f;这背后隐藏着欠采样技术的精妙设计。与直觉相反&#xff0c;采样率不必总是高于信号频率的两倍——…...