Home avatar

翼仔的博客

115.不同的子序列

1 问题描述115.不同的子序列 2 解题思路dp[i][j]表示考虑考虑t的前j个字符在s的前i个字符中的出现个数: if (s[i - 1] == t[j - 1]) dp[i][j] = dp[i - 1][j -

392.判断子序列

1 问题描述392.判断子序列 2 解题思路与1143.最长公共子序列基本一样,只需要再判断结果是否和s.size()相等就好了。 3 代码 cpp class Solution { public:

53.最大子数组和

1 问题描述53.最大子数组和 2 解题思路 2.1 动态规划令dp[i]表示以nums[i - 1]结尾的连续子数组的最大和,则: dp[i] = max(dp[i - 1] + nums[i - 1], nums[i - 1]); 2.2

1035.不相交的线

1 问题描述1035.不相交的线 2 解题思路只是1143.最长公共子序列的另一种描述 3 代码 cpp #include <vector> using std::vector; 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 =

134.加油站

1 问题描述134.加油站 2 解题思路考虑两个变量,一个是总油耗total_oil,一个是从起点到下一个站点后汽车内部剩余的汽油cur_oil(

718.最长重复子数组

1 问题描述718.最长重复子数组 2 解题思路dp[i][j]表示分别以nums1[i - 1], nums2[j - 1]结尾的两个子数组的最长公共子数组的长度; 递推关