动态规划
动态规划类算法题
菜鸡的鼻祖
这个作者很懒,什么都没留下…
展开
-
剑指Offer(第2版)——面试题48:最长不含重复字符的子字符串
题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含 ′a′ ~ ′z′ 的字符。例如,在字符串 “arabcacfr” 中,最长的不含重复字符的子字符串是 “acfr”,长度为4。解题思路:我们采用动态规划来求解,首先定义函数 f(i) 表示以第 i 个字符为结尾的不包含重复字符的最大子字符串长度。如果第 i 个字符,在前 i-1 个字...原创 2019-12-12 23:08:29 · 147 阅读 · 0 评论 -
剑指Offer(第2版)——面试题49:丑数
题目我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路思路1:逐个判断最简单的思路就是逐个判断每个整数是不是丑数。因为丑数只能被2,3,5整除。也就是说,如果一个数能被2整除,就继续除以2;能被3整除,就继续除以3;能被5整除,就继续除以5。如果最后...原创 2019-12-15 12:13:41 · 86 阅读 · 0 评论 -
剑指Offer(第2版)——面试题47:礼物的最大价值
题目:在一个 m×n 的棋盘的每一个格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格,直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能拿走多少价值的礼物?例如:现在有一个如下的棋盘,在这个棋盘中,按照(1,12,5,7,7,16,5)的顺序可以拿到总价值最大的礼物。解题思路:1.递归我们首先使...原创 2019-12-10 22:00:48 · 230 阅读 · 0 评论 -
剑指Offer(第2版)——面试题42:连续子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。解题思路:举例分析:下图是我们计算数组(1,-2,3,10,-4,7,2,-5)中子数组的最大和的过程。通过分析我们发现:累加的子数组和,如果大于零,那么我们继续累加;否则,则需要剔除原来的累加和重新开始。过程如下:代码:...原创 2019-12-05 11:08:09 · 132 阅读 · 0 评论 -
剑指Offer(第2版)——面试题19:正则表达式匹配
题目:请实现一个函数用来匹配包括“ . ”和“ * ”的正则表达式。模式中的字符“ . ”表示任意一个字符,而“ * ”表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab * ac * a"匹配,但是与"aa.a"和"ab*a"均不匹配。1.解题思路:字符“.”可以表示任意的字符 ,字符“ * ”表示...原创 2019-08-06 22:28:56 · 200 阅读 · 0 评论 -
剑指Offer(第2版)——面试题10:斐波那契数列
题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列公式为:1.解题思路:使用递归的方法是最简单的,但是效率成问题,有很多重复的计算。其实就是一种自顶向下的思想。使用自底向上的思想,从n=2开始计算,并且每次保存前面两次计算的结果,以此进行下一次计算,这样就不会有重复的计算。复杂度为O(n)。2.代码:class Solution {...原创 2019-06-23 11:44:37 · 177 阅读 · 0 评论