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

算法训练(leetcode)第三十八天 | 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和、392. 判断子序列

刷题记录

  • *1143. 最长公共子序列
  • 1035. 不相交的线
  • 53. 最大子数组和
  • 392. 判断子序列

*1143. 最长公共子序列

leetcode题目地址

本题和718. 最长重复子数组相似,只是本题不要求连续,需要记录前面最长的子序列,在此基础上累计长度。

dp[i][j]表示到text1串i-1之前与text2到j-1之前的最长公共子序列的长度。

时间复杂度: O ( n 2 ) O(n^2) O(n2)
空间复杂度: O ( n 2 ) O(n^2) O(n2)

// c++
class Solution {
public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size()+1, vector<int>(text2.size()+1, 0));int i,j;for(i=1; i<=text1.size(); i++){for(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[i-1][j-1];}
};

1035. 不相交的线

leetcode题目地址

本题和上题完全一致。

时间复杂度: O ( n 2 ) O(n^2) O(n2)
空间复杂度: O ( n 2 ) O(n^2) O(n2)

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

53. 最大子数组和

leetcode题目地址

dp[i]表示在下标i之前的最大子数组和。这里需要注意题目要求子数组最少包含一个元素,因此不能将子序列和跟0比,而要跟当前元素比,表示从当前位置开始为子数组头。

时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)

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

392. 判断子序列

leetcode题目地址

时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)

// c++
class Solution {
public:bool isSubsequence(string s, string t) {if(t.size()<s.size()) return false;int last = 0;for(int i=0; i<s.size(); i++){bool flag = false;for(int j=last; j<t.size(); j++){if(s[i]==t[j]) {flag = true;last = j+1;break;}}if(!flag) return false;}return true;}
};
http://www.lryc.cn/news/414072.html

相关文章:

  • STM32——外部中断(EXTI)
  • MySQL多实例部署
  • 云开发喝酒小程序3.6全新漂亮UI猜拳喝酒小程序 【已去除流量主】
  • 图论进阶之路-最短路(Floyd)
  • 安装sqllab靶机之后,练习关卡报403 forbidden
  • 微信VX多开 免扫码 登录 互斥体 可视化 Exui v1.1 易语言源码附成品软件
  • JavaEE 从入门到精通(一) ~ Maven
  • 滚珠丝杆与丝杆支撑座:稳定性与精度的双重保障
  • 实验5-11 空心的数字金字塔
  • C#对象和类型
  • 免费分享一套SpringBoot+Vue图书(图书借阅)管理系统【论文+源码+SQL脚本】,帅呆了~~
  • 数据结构与算法--队列
  • <Qt> 常用控件
  • 关于C/C++的编译、构建、CMake、x86_amd64等问题(自用)
  • 【设计模式】工厂模式详解
  • 【Spring Boot】用 Spring Security 实现后台登录及权限认证功能
  • PHP开发【石头剪刀布小游戏】
  • (leetcode学习)42. 接雨水
  • Python编程实例2
  • 排序算法:堆排序,golang实现
  • 【网络安全入门】学习网络安全必须知道的77个网络基础知识
  • limit 以及分页 SQL 语句
  • mysql8.0规范
  • 现代前端架构介绍(第三部分):深入了解状态管理层及其对前端App的影响
  • NLP与搜广推常见面试问题
  • Python怎么实现协程并发呢?
  • 专治408开始的晚!8月一定要完成这些事!
  • 计算机毕业设计选题推荐-校内跑腿业务系统-Java/Python项目实战
  • Unity命名验证工具类
  • 基于cubeMX的STM32开启SPI及DMA