![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Fitz_
这个作者很懒,什么都没留下…
展开
-
494. Target Sum(M)
494. Target Sum(M)题目描述给定一个数组和一个目标值,通过给数组里的数加上正负号,使得他们的和为目标值,求解总共有多少种加正负号的方法,下面是原题干以及一个例子:题意很简明,但刚开始我拿到有点懵,因为这道题是在深度优先搜索这个分类里的,后来恍然大悟,我结合一张图来阐述下的思路,以数组[2,1,3],目标1,为例子:从题意可以看出,数组里的每一个数有两种选择,即正或者负,那么我们可以数原创 2017-09-22 21:55:00 · 514 阅读 · 0 评论 -
3. Longest Substring Without Repeating Characters(M)
题目描述给定一个字符串,求出最长的没有重复字符的子串的长度。原题以及例子如下, 题目分析题意简单直接,而且很容易就能想到一种O(n^2)的方法,就是两层for循环,一旦出现重复的字符,就从上一个重复字符的下一个字符开始,比如,“adbagh”,发现“a”重复后,便从“d”开始重新进行遍历,代码我就不贴了。 仔细一想,其实存在着时间复杂度为O(n)。我们在时间复杂度为O(n^2)原创 2018-02-04 20:38:23 · 217 阅读 · 0 评论 -
123.Best Time to Buy and Sell Stock III(H)
题目描述给定一个数组prices,数组中的每个元素分别代表第i天股票的价格。现在你能进行最多两次交易,求你能取得的最大利益。 备注:同时只能持有一支股票。 原题如下, 算法描述这道题如果要穷举出所有的情况,肯定是不现实的。我们用这么一个贪心的策略来得到我们想要的结果。 我们记录4个状态,分别是第一次购买股票时获取的利益(firstBuy),第一次卖出股票时获取的利益(fir原创 2018-01-08 15:57:35 · 219 阅读 · 0 评论 -
516. Longest Palindromic Subsequence(M)
题目描述给定一个字符串s,求其中最长回文子序列的长度,你可以认为s的最长长度不超过1000。原题以及例子如下, 首先来简单分析一下这道题,题目描述很简单,这里需要理解两个词,子序列和回文。从例子中可以看出子序列是指按照字符串顺序但是不必连续的字符串。回文就是指将字符串倒着读和正着读时为同一个字符串,即s[i] = s[n-i], s[n]为字符串最后一位,s[0]表示字符串第一位。 好,弄清原创 2017-12-16 13:22:25 · 224 阅读 · 0 评论 -
714. Best Time to Buy and Sell Stock with Transaction Fee(M)
题目描述给定一个整数数组 prices 表示股票的价格,第 i 个元素表示第 i 天的股票价格,同时给定 fee 表示进行一次股票交易需要承担的费用。 允许进行多次股票交易,但每次交易都需要承担 fee 的费用。并且你在某一时刻只允许拥有一支股票。 要求返回能获得的最大利益。原题以及例子如下, 关于这种选择类的问题,最容易想到的便是枚举出所有的可能,然后选出最大的利益,要实现这种方法可以使用二原创 2017-12-23 12:28:22 · 274 阅读 · 0 评论 -
646. Maximum Length of Pair Chain(M)
题目描述给定n对数,在每对数了,第一个数总是小于第二个数。现在我们定义,数对(c,d)能与数对(a,b)组成一条链且在(a,b)之后,当且仅当c>b时。给定一个数对的集合,求出这个集合中的最长数对链。不用使用完所有的数对,并且可以以任意的顺序选择数对加入链条中。 原题干以及例子如下, 首先,我们来提取题干中隐藏的一些信息。这是一个集合且后面强调了可以以任意的顺序选择数对,这表示数对的存放方式是无原创 2017-11-25 21:20:55 · 361 阅读 · 0 评论 -
718.Maximum Length of Repeated Subarray(M)
题目描述给定两个数组A,B,要求两个数组中最长重复的子集,原题以及例子如下, 看到题目表述后,很容易想到一种方法,暴力求解,下面附上我暴力求解的代码int findLength(vector<int>& A, vector<int>& B) { int max = 0; int count = 0; int j = 0; int原创 2017-11-05 13:40:41 · 886 阅读 · 0 评论 -
174. Dungeon Game(H)
题目描述一个恶魔抓住了公主,并且把她囚禁在地牢的右下角。这个地牢是个M*N的矩阵。 骑士被囚禁在地牢的左上角,骑士必须穿过重重关卡拯救公主。 骑士有初始生命值由一个正数表示。如果他的生命值降为0及其以下,则骑士死亡。在地牢里的一些房间有恶魔看守,当骑士进入这些房间时,会损失相应生命值(即矩阵中对应的负数);而另外一些房间则存在一些物品,能给骑士加相应的血量(即矩阵中的正数)。 为了能尽快到达公主原创 2017-11-18 20:08:12 · 371 阅读 · 0 评论 -
650.Two Keys Keyboard(M)
题目描述最初给你一个字母A,你每一步能进行两种操作: 1. 对当前所有字母进行复制 2. 粘贴之前最后一次复制的字母到当前字符串的尾部 给定一个字符串的长度n,求解最小使得字符串长度变为n的步数,下图是题中的一个例子 刚开始读完题意,一下就想到可以用宽度优先搜索来解这道题,因为每一步有两种选择,相当于这是一颗二叉树,你要找到最靠近根的目标节点,所以可以用BFS完成。写完之后,发现果然原创 2017-10-14 10:56:24 · 379 阅读 · 0 评论 -
698. Partition to K Equal Sum Subsets(M)
题目描述给定一个数组和一个正整数k,能否把数组分为k个不为空的子集,使得这k个子集内所有元素的和相等,同时要求数组中元素大于0小于10000且 1 < k < 16,原题干如下, 首先确定几个变量,sum代表数组内所有元素的和,target代表每个子集内所有元素的和,做这道题时,我们得先得到target,不然无从下手。首先要抓住一个关键词,每个子集的元素和相等,这意味 target = sum /原创 2017-10-22 11:13:31 · 781 阅读 · 0 评论 -
91. Decode Ways(M)
题目描述这道题大致的意思就是给你一个全是数字的字符串,按照提供的编码存在几种把数字转化为字母的方式,题目大体上就是这个意思。从题目给出的例子可以看出,之所以存在翻译时的歧义(多种翻译结果),是因为对字符串的分割的不同,比如“123”可以分割为“1,2,3”,“12,3”“1,23”这三种情况。可能目前还看不出什么,但是你可以试着写一写,比如“1”存在一种翻译方式,“12”存在两种翻译方式,“122”原创 2017-10-02 22:57:11 · 226 阅读 · 0 评论 -
712. Minimum ASCII Delete Sum for Two Strings
712. Minimum ASCII Delete Sum for Two Strings题目简述给定两个任意字符串s1,s2。通过删除字母操作,使得两个字符串相等。求被删除字符的最小ASCII码之和。原题以及例子如下, 解析在下面的解释中,用dp[i][j]表示s1[i:],s2[j:]变成相同子串的最小删除代价。在动态规划问题中,我们往往需要将一个问题分成若干个小问题,然...原创 2018-04-05 17:20:21 · 198 阅读 · 0 评论