动态规划
Hey1213
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
140. 单词拆分 II
题目:上一题139的加强版 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。 返回所有这些可能的句子。 我的实现方法是依旧是记忆化回溯,相比上一题加上了句子分割后的拼接。 #!/usr/bin/env python3.6 # _*_coding:utf-8 _*_ # @Time : 2019/...原创 2019-10-29 22:14:21 · 147 阅读 · 0 评论 -
139. 单词拆分
题目: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 这题我一开始用暴力的回溯解法,因为忘记记录已搜索过的拆分点,导致在极端数据下会超时,时间复杂度会到O(n^n),如下: 因此,改用题解中的第一种解法记忆化回溯,也就是用一个列表记录...原创 2019-10-29 21:08:55 · 160 阅读 · 0 评论 -
131. 分割回文串
题目: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 一开始的思路跟题解第二种方法很像:记录出每个区间是否回文+DFS 但是在实现的时候有一个细节没想好: for i in range(n): for j in range(0, i+1): if i == j: p[j][i] = True continu...原创 2019-10-25 13:29:41 · 186 阅读 · 0 评论 -
123. 买卖股票的最佳时机 III
本题相当于T121和T122的进阶版 相比于前两次的只有一次交易和不限交易次数,本题仅限小于等于两次交易 虽然有前两题做铺垫,但我还是没有思路 自己想的是一些暴力方法,复杂度基本都是O(n^2)左右 看了一下题解,有点像动态规划,基本上都是以下思路: 设定四个变量: fst_buy第一次买入可以获得的最大利润 fst_sell第一次卖出可以获得的最大利润 sec_buy第二次买入可以获得的最大利润...原创 2019-04-05 15:18:06 · 401 阅读 · 0 评论 -
873. 最长的斐波那契子序列的长度
本题主要是求一串数组成的序列中,最长的斐波那契子序列的长度 思路: 个人理解,斐波那契数列的精髓在于你知道某两个数,就可以一直往前/往后推出整个数列的所有数,所以我们可以设任意两个数为该斐波那契子序列的最后两个数(作为一个状态),然后写出动态转移方程:ans[i][j] = ans[j][k] + 1(若ans[j][k] = 0,则改成+3) 可能是我多年封印的动态规划突然开窍了…O(∩_∩)O...原创 2019-04-09 13:31:16 · 447 阅读 · 0 评论 -
871. 最低加油次数
我自己最初的想法是动态规划 f[i][j] 表示到第i个点时,加j次油最多能走多少英里 f[i][j] = max(f[k][j-1] + k点的加油量 - k点到i点的油耗量) 最后选择f[target点][i]>0中,最小的i值 from typing import List class Solution: def minRefuelStops(self, target: int, s...原创 2019-07-17 12:50:23 · 563 阅读 · 0 评论
分享