算法训练营Day53(动态规划14)

1143.最长公共子序列 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

体会一下本题和 718. 最长重复子数组 的区别  

class Solution:
    def longestCommonSubsequence(self, text1: str, text2: str) -> int:
        # 创建一个二维数组 dp,用于存储最长公共子序列的长度
        dp = [[0] * (len(text2) + 1) for _ in range(len(text1) + 1)]
        
        # 遍历 text1 和 text2,填充 dp 数组
        for i in range(1, len(text1) + 1):
            for j in range(1, len(text2) + 1):
                if text1[i - 1] == text2[j - 1]:
                    # 如果 text1[i-1] 和 text2[j-1] 相等,则当前位置的最长公共子序列长度为左上角位置的值加一
                    dp[i][j] = dp[i - 1][j - 1] + 1
                else:
                    # 如果 text1[i-1] 和 text2[j-1] 不相等,则当前位置的最长公共子序列长度为上方或左方的较大值
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
        
        # 返回最长公共子序列的长度
        return dp[len(text1)][len(text2)]

 

1035.不相交的线 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

其实本题和 1143.最长公共子序列 是一模一样的,尝试自己做一做

class Solution:
    def maxUncrossedLines(self, nums1: List[int], nums2: List[int]) -> int:
        dp = [[0] * (len(nums2)+1) for _ in range(len(nums1)+1)]
        for i in range(1, len(nums1)+1):
            for j in range(1, len(nums2)+1):
                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[-1][-1]

53. 最大子序和 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

这道题我们用贪心做过,这次 再用dp来做一遍 

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        dp = [0] * len(nums)
        dp[0] = nums[0]
        result = dp[0]
        for i in range(1, len(nums)):
            dp[i] = max(dp[i-1] + nums[i], nums[i]) #状态转移公式
            result = max(result, dp[i]) #result 保存dp[i]的最大值
        return result

 

相关推荐

  1. 算法训练Day53动态规划14

    2024-01-26 20:22:01       56 阅读
  2. 算法训练Day50动态规划11

    2024-01-26 20:22:01       60 阅读
  3. 算法训练Day52动态规划13

    2024-01-26 20:22:01       48 阅读
  4. 算法训练Day56动态规划16

    2024-01-26 20:22:01       52 阅读
  5. 算法训练Day57动态规划17

    2024-01-26 20:22:01       51 阅读
  6. 二刷算法训练Day57 | 动态规划(17/17)

    2024-01-26 20:22:01       25 阅读
  7. 代码随想录算法训练day54|第九章 动态规划part15

    2024-01-26 20:22:01       45 阅读
  8. 算法训练Day49(动态规划10

    2024-01-26 20:22:01       59 阅读
  9. 算法训练day47,动态规划15

    2024-01-26 20:22:01       43 阅读
  10. 算法训练day44(补),动态规划12

    2024-01-26 20:22:01       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-26 20:22:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-26 20:22:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-26 20:22:01       87 阅读
  4. Python语言-面向对象

    2024-01-26 20:22:01       96 阅读

热门阅读

  1. Type Script Generator函数

    2024-01-26 20:22:01       56 阅读
  2. Git学习笔记:版本回滚

    2024-01-26 20:22:01       44 阅读
  3. nginx部署https域名ssl证书

    2024-01-26 20:22:01       60 阅读
  4. USART通讯

    2024-01-26 20:22:01       42 阅读
  5. Linux管理命令介绍

    2024-01-26 20:22:01       46 阅读
  6. 【达梦数据库】如何使用ANTLR4 jar方式分析dm sql

    2024-01-26 20:22:01       52 阅读
  7. redis 工具类

    2024-01-26 20:22:01       58 阅读
  8. stream流的使用各种记录

    2024-01-26 20:22:01       52 阅读