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

Day.38 | 1143.最长公共子序列 1035.不相交的线 53.最大子序和 392.判断子序列

1143.最长公共子序列

要点:dp[i][j] = dp[i - 1][j - 1] + 1;  dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);

class Solution {
public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size() + 1, vector<int>(text2.size() + 1, 0));for (int i = 1; i <= text1.size(); ++i) {for (int j = 1; j <= text2.size(); ++j) {if (text1[i - 1] == text2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[text1.size()][text2.size()];}
};

1035.不相交的线

要点:与上一题一模一样

class Solution {
public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>> dp(nums1.size() + 1, vector<int>(nums2.size() + 1, 0));for (int i = 1; i <= nums1.size(); ++i) {for (int j = 1; j <= nums2.size(); ++j) {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]);}}}return dp[nums1.size()][nums2.size()];}
};

53.最大子序和

要点:dp[i] = max(dp[i - 1] + nums[i], nums[i]); 求最大的连续子数组的和,只有两个状态,要么加上当前的 nums[i],要么从 nums[i] 重新开始

class Solution {
public:int maxSubArray(vector<int>& nums) {vector<int> dp(nums.size(), 0);dp[0] = nums[0];int result = nums[0];for (int i = 1; i < nums.size(); ++i) {dp[i] = max(dp[i - 1] + nums[i], nums[i]);result = max(result, dp[i]);}return result;}
};

392.判断子序列

要点:双指针也能做,但是主要目的是用dp解决,依然与上面几道题目类似

class Solution {
public:bool isSubsequence(string s, string t) {vector<vector<int>> dp(s.size() + 1, vector<int>(t.size() + 1, 0));for (int i = 1; i <= s.size(); ++i) {for (int j = 1; j <= t.size(); ++j) {if (s[i - 1] == t[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = dp[i][j - 1];}}}if (dp[s.size()][t.size()] == s.size()) {return true;} else {return false;}}
};

http://www.lryc.cn/news/423892.html

相关文章:

  • pytorch 3 计算图
  • 一文吃透:暗水印是什么?企业防泄密可以加暗水印吗?
  • Ajax-02.Axios
  • NodeJS的核心配置文件package.json和package.lock.json详解
  • 开源数据采集和跟踪系统:助力营销决策的关键工具
  • Luminar Neo for Mac/Win:创新AI图像编辑软件的强大功能
  • Mac平台M1PRO芯片MiniCPM-V-2.6网页部署跑通
  • MyBatis:Maven,Git,TortoiseGit,Gradle
  • 获取链表中间位置的两种方法方法
  • 第二十天的学习(2024.8.8)Vue拓展
  • 微信小程序教程011:全局配置:Window
  • Tomcat服务器和Web项目的部署
  • PCIe学习笔记(22)
  • Vue3 依赖注入Provide / Inject
  • Python | Leetcode Python题解之第332题重新安排行程
  • React状态管理:react-redux和redux-saga(适合由vue转到react的同学)
  • 刷题技巧:双指针法的核心思想总结+例题整合+力扣接雨水双指针c++实现
  • 什么是前端微服务,有何优势
  • 小论文写作——02:编故事
  • GIT企业开发使用介绍
  • 文件上传-前端验证
  • ROT加密算法login-RESERVE
  • C++ 新特性 | C++20 常用新特性介绍
  • Java设计模式之策略模式实践
  • C语言——结构体数组、结构体指针、结构体函数与二级指针
  • 【4】策略模式
  • BGP 反射器联邦实验
  • stm32入门学习13-时钟RTC
  • vuex properties of undefined (reading ‘getters‘)
  • 再谈表的约束