- 博客(5)
- 收藏
- 关注
原创 编辑距离 动态规划(dp数组)
来源:labuladong的算法小抄题目:现在有两个字符串s1和s2,请计算由s2转换成s1最少需要多少步?可以对字符串进行三种操作:插入一个字符,删除一个字符,替换一个字符。例: s1 ="intention" s2 = "execution"结果:5方法:解决两个字符串的动态规划问题,一般都是用两个指针i,j分别指向两个字符串的最后,然后一步一步的往前走,缩小问题规模。思想:base ...
2021-12-06 17:08:36
586
原创 最长公共子序列 LCS (动态规划)
来源:labuladong的算法小抄题目:最长公共子序列(Longest Common Subsequence),求两个字符串的LCS长度。例:str1: abcdestr2: aceb结果:3 (最长子序列为ace)第一步:明确dp数组的含义 dp[i][j]:对str1[0...i-1]和str2[0...j-1]的LCS长度。第二步:定义base case索引为0的行和列来表示空串,dp[0][...]和dp[...]...
2021-12-04 15:14:26
176
原创 最大子数组(分治法+动态规划)
来源:labuladong的算发小抄方法一:分治法#include <iostream>using namespace std;//计算S3 分为两部分//第一部分为包含mid位置的元素,依次向前遍历找最大的子数组为Sleft//第二部分为包含mid+1位置的元素,依次向后遍历,找到最大子数组//S3就是包含mid和mid+1位置的最大子数组,即为Sleft和Sright的和。int CrossingSubArray(int X[],int low,int mid,in
2021-12-02 17:54:09
1431
原创 二维递增子序列:信封嵌套问题
来源:labuladong的算法小抄 第二章2.2问题描述:给出一个信封,每个信封用高度和宽度的整数对形式(w,h)表示。当一个信封A的宽度和高度都大于另一个信封B的时候,则B就可以放到A里。如同‘俄罗斯套娃’一样。请计算做多能有多少个信封能组成一组‘俄罗斯套娃’信封(即最多能套几层)。思路分析: 先对宽度进行升序排列,如果遇到w相同的情况,则按照高度h进行降序排列。之后把所有的h作为一个数组,在这个数组计算出LIS(最长递增子序列)的长度就是答案。因为两个w相同的信封不能相互包含,w相同是将h
2021-12-02 14:54:21
679
原创 最长递增子序列 动态规划+二分搜索
题目来源:力扣参考资料:labuladong的算法小抄题目描述:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。注:子序列:不一定是连续的。子串:一定是连续的输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。解法一:动态规划
2021-11-30 11:51:27
251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅