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

代码随想录算法训练营第五十天|LeetCode1143 最长公共子序列、LeetCode1035 不相交的线、LeetCode53 最大子数组和

题1:

指路:1143. 最长公共子序列 - 力扣(LeetCode)
思路与代码:

类似于最长重复子数组,我们依旧定义一个二维数组dp[i][j],其含义为从0到以i-1结尾的nums1数组和从0到j-1结尾的nums2数组的最长公共子序列的长度。如果nums1中的数和nums2的数相等时dp数组得到一个结果,即为dp[i][j]=dp[i-1][j-1]+1,当两个数组中的数值不相等时,就将行或列后退一位取二者较大值,即为dp[i][j]=max(dp[i-1][j], dp[i][j-1])。相似的,我们将dp数组结尾定义为i-1和j-1,那么这里就可以直接初始化为0。最后返回即可。代码如下:

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()];}
};

题2:

指路:1035. 不相交的线 - 力扣(LeetCode)
思路与代码:

这个题跟上一个题大同小异。代码如下:

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

题3:

指路:53. 最大子数组和 - 力扣(LeetCode)
思路与代码:
class Solution {
public:int maxSubArray(vector<int>& nums) {vector<int> dp(nums.size());dp[0] = nums[0];int sum = dp[0];for (int i = 1; i < nums.size(); i++) {dp[i] = max(dp[i - 1] + nums[i], nums[i]);if (dp[i] > sum) {sum = dp[i];} }return sum;}
};

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

相关文章:

  • 百日筑基第三天-SOA初步了解
  • 「2024中国数据要素产业图谱1.0版」重磅发布,景联文科技凭借高质量数据采集服务入选!
  • 条码二维码读取设备在医疗设备自助服务的重要性
  • centos 7.8 安装sql server 2019
  • Android焦点机制结合WMS
  • Hive分区和分桶
  • GPT-5的到来~
  • 责任链模式(设计模式)
  • 计算机图形学入门20:加速光线追踪
  • sys.stdin对象——实现标准输入
  • 嵌入式项目分享| 终极智能手表,全过程+全开源分享
  • 【Linux详解】进程的状态 | 运行 阻塞 挂起 | 僵尸和孤儿状态
  • MySQL添加外键约束经典案例
  • vue3监听器watch以及watchEffect的使用
  • modelsim做后仿真的一点思路
  • 如何获取特定 HIVE 库的元数据信息如其所有分区表和所有分区
  • 如何在 qmake(QtCreator)中指定 Mac 平台
  • day39动态规划part02| 62.不同路径 63. 不同路径 II 343. 整数拆分 (可跳过)96..不同的二叉搜索树 (可跳过)
  • 声场合成新方法:基于声波传播的框架
  • 鸿蒙文件操作事前准备
  • AI智能时代:ChatGPT如何在金融市场发挥策略分析与预测能力?
  • C#面:C#属性能在接口中声明吗?
  • 区块链的历史和发展:从比特币到以太坊
  • input()函数——输入
  • CST 时间格式减去八小时
  • 植物大战僵尸杂交版技巧大全(附下载攻略)
  • HTTPS 代理的优点和缺点是什么?
  • Mac安装多版本node
  • HTML静态网页成品作业(HTML+CSS)——动漫猪猪侠网页(4个页面)
  • 【机器学习300问】125、什么是双向循环神经网络(BRNN)?什么是深度循环神经网络(DRNN)?