【代码随想录Day43】动态规划Part11

news/2024/10/15 21:34:13/

1143.最长公共子序列

题目链接/文章讲解:代码随想录
视频讲解:动态规划子序列问题经典题目 | LeetCode:1143.最长公共子序列_哔哩哔哩_bilibili

java">class Solution {public int longestCommonSubsequence(String text1, String text2) {// 将输入字符串转换为字符数组char[] nums1 = text1.toCharArray();char[] nums2 = text2.toCharArray();// 创建一个二维数组 dp,用于存储子问题的解// dp[i][j] 表示 text1 的前 i 个字符与 text2 的前 j 个字符的最长公共子序列长度int[][] dp = new int[nums1.length + 1][nums2.length + 1];// 遍历字符数组,用 i 和 j 作为索引for (int i = 1; i <= nums1.length; i++) {for (int j = 1; j <= nums2.length; j++) {// 如果当前字符相等,则最长公共子序列长度加1if (nums1[i - 1] == nums2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {// 如果不相等,取之前的最大值dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]);}}}// 返回最长公共子序列的长度return dp[nums1.length][nums2.length];}
}

1035.不相交的线

题目链接/文章讲解:代码随想录
视频讲解:动态规划之子序列问题,换汤不换药 | LeetCode:1035.不相交的线_哔哩哔哩_bilibili

java">class Solution {// 方法:计算两个数组中未交叉的最大连线数public int maxUncrossedLines(int[] nums1, int[] nums2) {// 创建一个二维数组 dp,用于存储子问题的解// dp[i][j] 表示 nums1 的前 i 个元素和 nums2 的前 j 个元素的最大未交叉线数int[][] dp = new int[nums1.length + 1][nums2.length + 1];// 遍历 nums1 和 nums2 的每一个元素for (int i = 1; i <= nums1.length; i++) {for (int j = 1; j <= nums2.length; j++) {// 如果 nums1 的当前元素与 nums2 的当前元素相等if (nums1[i - 1] == nums2[j - 1]) {// 则可以在当前元素之间画一条线,增加一条连线dp[i][j] = dp[i - 1][j - 1] + 1;} else {// 如果不相等,则取前一个状态的最大值// dp[i][j] = max(dp[i-1][j], dp[i][j-1])dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);}}}// 返回 dp 数组中最后一个元素,代表 nums1 和 nums2 的最大未交叉线数return dp[nums1.length][nums2.length];}
}

53. 最大子序和

题目链接/文章讲解:代码随想录
视频讲解:看起来复杂,其实是简单动态规划 | LeetCode:53.最大子序和_哔哩哔哩_bilibili

java">class Solution {public int maxSubArray(int[] nums) {// 初始化dp数组和maxSum变量int[] dp = new int[nums.length];dp[0] = nums[0];int maxSum = dp[0]; // 初始最大值为第一个元素for (int i = 1; i < nums.length; i++) {// 计算以 nums[i] 结尾的最大子数组和dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]);// 更新最大子数组和maxSum = Math.max(maxSum, dp[i]);}return maxSum;}
}

392.判断子序列

题目链接/文章讲解:代码随想录
视频讲解:动态规划,用相似思路解决复杂问题 | LeetCode:392.判断子序列_哔哩哔哩_bilibili

java">class Solution {// 定义一个方法,检查字符串 s 是否为字符串 t 的子序列public boolean isSubsequence(String s, String t) {// 将字符串 s 和 t 转换为字符数组char[] nums1 = s.toCharArray();char[] nums2 = t.toCharArray();// 创建一个二维数组 dp,用于动态规划,行数为 nums1.length + 1,列数为 nums2.length + 1// dp[i][j] 表示 nums1 的前 i 个字符与 nums2 的前 j 个字符的最长公共子序列的长度int[][] dp = new int[nums1.length + 1][nums2.length + 1];// 遍历 nums1 和 nums2 的每个字符for (int i = 1; i <= nums1.length; i++) {for (int j = 1; j <= nums2.length; j++) {// 如果当前字符相等,则最长公共子序列的长度加一if (nums1[i - 1] == nums2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1; // 继承之前的值并加一} else {// 如果不相等,取前一行或前一列的最大值dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]);}}}// 如果 dp[nums1.length][nums2.length] 等于 nums1.length,说明 s 是 t 的子序列if (dp[nums1.length][nums2.length] == nums1.length) {return true; // 是子序列} else {return false; // 不是子序列}}
}

http://www.ppmy.cn/news/1539623.html

相关文章

使用three.js 实现蜡烛效果

使用three.js 实现蜡烛效果 import * as THREE from "three" import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"var scene new THREE.Scene(); var camera new THREE.PerspectiveCamera(60, window.innerWidth / window.in…

香港大学神作 LightRAG 横空出世!AI 检索生成系统革命,秒懂复杂信息,动态数据无所遁形!

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; 微信订阅号&#xff5c;搜一搜&…

Python基础知识9

Python推导式 1.Python 推导式是一种独特的数据处理方式&#xff0c;可以从一个数据序列构建另一个新的数据序列的结构体。 2.Python 支持各种数据结构的推导式&#xff1a; 列表(list)推导式字典(dict)推导式集合(set)推导式元组(tuple)推导式 列表推导式 1.列表推导式格…

PHP DateTime基础用法

PHP DateTime 的用法详解 一、引言 在开发 PHP 应用程序时&#xff0c;处理日期和时间是一个至关重要的任务。PHP 提供了强大的日期和时间处理功能&#xff0c;其中 DateTime 类是最常用的工具之一。DateTime 类提供了丰富的方法来创建、格式化、计算和比较日期时间&#xff…

QT QML 练习8-Simple Transformations

简单的转换&#xff08;Simple Transformations&#xff09; 转换操作改变了一个对象的几何状态。QML元素对象通常能够被平移&#xff0c;旋转&#xff0c;缩放。下面我们将讲解这些简单的操作和一些更高级的用法。 我们先从一个简单的转换开始。用下面的场景作为我们学习的开始…

C++20那些事之constexpr与comma expr

C20那些事之constexpr与comma expr C20 引入了多项新特性&#xff0c;进一步增强了编译时能力和代码安全性。本文将深入探讨两项重要的变更&#xff1a;constexpr 函数中的异常处理以及下标运算符中逗号运算符的弃用。 注&#xff1a;懒人版&#xff0c;本节的代码示例与相关文…

【氮化镓】低温对p-GaN HEMT迁移率、阈值电压和亚阈值摆幅的影响

本期分享一篇低温对p-GaN HEMT 迁移率、阈值电压和亚阈值摆幅影响进行表征和建模的研究论文。文章作者Shivendra Kumar Singh、Thien Sao Ngo、Tian-Li Wu(通讯作者)和Yogesh Singh Chauhan,分别来资源中国台湾阳明交通大学国际半导体技术学院、印度理工学院坎普尔分校电气工…

多层嵌套json字符串(jsonStr)写入redis

1、连接redis Jedis jedis new Jedis("localhost", 6379); 2、将字符串转为json格式 JSONObject jsJSONObject.fromObject(jsonStr); 3、对json格式进行解析 4、将json写入redis public static void RedisSet(JSONObject js,Jedis js01){ //获取json中的所有ke…