随笔分类 -  problems

上一页 1 2 3 4 5 6

leetcode 235 236 二叉树两个节点的最近公共祖先
摘要:描述: 给定二叉树两个节点,求其最近公共祖先。最近即所有公共祖先中深度最深的。 ps:自身也算自身的祖先。 235题解决: 这是二叉搜索树,有序的,左边小右边大。 236题解决: Aha: 其实还有一些优化可以在编译期层或概率层,如第一个if中的三个或,根据树的深度和测试数量,或发生的概率进行调整, 阅读全文

posted @ 2018-01-04 12:05 willaty 阅读(956) 评论(0) 推荐(0)

leetcode 10 正则表达式匹配
摘要:描述: 实现.和*号匹配,*表示前面字符0~无穷个,.表示任意一个字符。 要求全部,匹配,不是部分匹配。 解决: 思路类似最长公共子序列, dp[i][j] = dp[i - 1][j - 1], 如果s[i] == p[j] || p[j] == '.' dp[i][j - 2], 如果p[j] 阅读全文

posted @ 2017-12-28 11:15 willaty 阅读(5929) 评论(0) 推荐(0)

leetcode 64 最小路径和
摘要:描述: 题目给个矩阵,每个点有个权重,左上到右下,只能往右或下走,求最小路径。 解决: dp[i][j] = min(d[i -1][j], dp[i][j - 1]) + dp[i][j] 更新一遍即可,改为一维。 注意,在原数组的基础上改不是很好,自己定义个数组存就可以了。 阅读全文

posted @ 2017-12-27 13:22 willaty 阅读(179) 评论(0) 推荐(0)

leetcode 63 不同的路径2
摘要:描述: 从左上角走到右下角,中间可能有若干阻碍; 题目给出一个矩阵,0表示可以走,1表示有障碍。 解决: 思路同第一题,只是如果上面或左边有障碍,自身不一定能走,注意些边界条件即可,复杂度仍是m*n。 为了防止和真正的路径1冲突,走过的障碍改为-1。 阅读全文

posted @ 2017-12-26 20:23 willaty 阅读(110) 评论(0) 推荐(0)

leetcode 62 不同的路径
摘要:描述: m*n的矩阵,从左上角走到右下角,只能向下或向右走。 解决: 简单dp,dp[i][j]表示到i,j这点总共多少种路径。 dp[i][j] = dp[i][j - 1] + dp[i - 1][j],化为一维: 注意,1*1的化结果是1的,如果别的题目是0,初始化里i改为从1开始即可。 也可 阅读全文

posted @ 2017-12-26 15:45 willaty 阅读(139) 评论(0) 推荐(0)

POJ2533 最长递增子序列
摘要:描述: 7 1 7 3 5 9 4 8 输出4 最长递增子序列为1 3 5 9,不必连续。 解法: 三种思路: 转化为最长公共子序列(n^2),动态规划(n^2),不知叫什么解法(nlogn)。 解法一:转化 先排序nlogn,在最长公共子序列 解法二:动态规划 dp[i]定义为,以此数为终点的最长 阅读全文

posted @ 2017-12-20 20:29 willaty 阅读(192) 评论(0) 推荐(0)

POJ1458 最长公共子序列
摘要:描述: 给定两个字符串,求其最长公共子序列(不用连续), 输入: abc bcc programning content 输出: 2 2 解法: 动态规划。 定义dp[i][j]表示s1到i索引,以及s2到j索引为止的最长公共子序列, 则定义如下: dp[i][j] = dp[i - 1][j - 阅读全文

posted @ 2017-12-19 20:17 willaty 阅读(232) 评论(0) 推荐(0)

POJ1163 数学三角求最大路径
摘要:描述:输入,行数,之后接数据,第一行一个数据,之后每行加一。5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5思路:简单动态规划问题。dp[i][j]定义为到这个数为止(包括这个数)的最大和,则:dp[i][j] = max(d[i-1][j-1], d[i-1][j]),未考虑边界条件 阅读全文

posted @ 2017-12-19 15:09 willaty 阅读(274) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6

导航