自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 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 200

原创 15. 3Sum(M)

题目描述给定一个长度为n的数组,找出3个数a,b,c,使之满足a+b+c=0这个等式。找出满足这个条件的所有不重复集合。原题以及例子如下, 题目分析PS:答案的集合不要求是有序的。如果是暴力破解的话,那么这道题的时间复杂度为O(n^3),穷举出所有的例子,但肯定是会超时的。我们可以做出这么一个转换,a+b=-c。做过Two Sum的朋友,肯定一下子就能想到如何以O(n)的时间

2018-02-06 13:17:22 218

原创 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 218

原创 98. Validate Binary Search Tree(M)

题目描述给定一颗二叉树,判断它是否为搜索二叉树。 搜索二叉树的定义如下:左子树所有的值都小于当前节点右子树所有的值都大于当前节点左子树和右子树都为搜索二叉树原题以及例子如下, 题目分析根据搜索二叉树的定义我们可以发现,如果当使用中序遍历时,我们可以得到一个升序的序列,如果这个序列不满足升序的条件,那么它就不是搜索二叉树。具体实现如下(pre代表遍历的前一个结点的

2018-02-02 16:00:53 169

原创 684.Redundant Connection(M)

题目描述前言:在这个问题中,树的定义是无向且无环的。 现在给你一个图,在这个图中存在一条多余的边,去掉那一条边后,这个图边符合树的定义,现在我们要做的就是找出那一条多余的边。如果有多条边符合条件,那么则返还最后出现的那条边。原题以及例子如下, 算法描述这里我们通过每次加入一条边,直到环的出现,来得出答案,使得环出现的那条边必然是最后一个符合条件的边。在判断是否成环时可以使用并查

2018-01-22 00:18:57 211

原创 123.Best Time to Buy and Sell Stock III(H)

题目描述给定一个数组prices,数组中的每个元素分别代表第i天股票的价格。现在你能进行最多两次交易,求你能取得的最大利益。 备注:同时只能持有一支股票。 原题如下, 算法描述这道题如果要穷举出所有的情况,肯定是不现实的。我们用这么一个贪心的策略来得到我们想要的结果。 我们记录4个状态,分别是第一次购买股票时获取的利益(firstBuy),第一次卖出股票时获取的利益(fir

2018-01-08 15:57:35 222

原创 8.8 证明EXACT 4SAT问题是NPC问题

题目描述在EXACT 4SAT 问题中,指定输入为一组语句,每个语句恰好都是4个表达式的析取表示,并且每个变量最多在一个语句中出现一次。目标是找到一个合适的赋值,如果该赋值存在,那么可以证明EXACT 4SAT 问题是NPC问题。证明证明一个问题是NPC问题,只要能证明该问题能从另一个NPC问题归约得到,即得证。这道题我们可以考虑从3SAT问题归约到EXACT 4SAT 问题。 首先,我们看看如何

2017-12-31 17:06:53 440

原创 714. Best Time to Buy and Sell Stock with Transaction Fee(M)

题目描述给定一个整数数组 prices 表示股票的价格,第 i 个元素表示第 i 天的股票价格,同时给定 fee 表示进行一次股票交易需要承担的费用。 允许进行多次股票交易,但每次交易都需要承担 fee 的费用。并且你在某一时刻只允许拥有一支股票。 要求返回能获得的最大利益。原题以及例子如下, 关于这种选择类的问题,最容易想到的便是枚举出所有的可能,然后选出最大的利益,要实现这种方法可以使用二

2017-12-23 12:28:22 285

原创 516. Longest Palindromic Subsequence(M)

题目描述给定一个字符串s,求其中最长回文子序列的长度,你可以认为s的最长长度不超过1000。原题以及例子如下, 首先来简单分析一下这道题,题目描述很简单,这里需要理解两个词,子序列和回文。从例子中可以看出子序列是指按照字符串顺序但是不必连续的字符串。回文就是指将字符串倒着读和正着读时为同一个字符串,即s[i] = s[n-i], s[n]为字符串最后一位,s[0]表示字符串第一位。 好,弄清

2017-12-16 13:22:25 225

原创 42. Trapping Rain Water(H)

题目描述给定n个非负整数代表一个海拔的地图,每个方块的宽度为1,计算在雨后,它能积攒的雨水的体积,原题如下, 这道题看起来挺简单的,但是一定要注意,这种题难度是Hard,肯定是不简单的,一定要考虑清楚,自己的算法能否解决所有的情况,可以先自己举几个极端但简单的例子试一下。 现在开始分析题意。这道题很想木桶装水的问题,决定木桶容量大小的在于最短的板。而这道题就像是只有两块板的木桶,能容量大小由

2017-12-09 21:19:32 216

原创 209.Minimum Size Subarray Sum(M)

题目描述给定一个大小为n的正整数数组和一个正整数s,要求找到一个最小的连续子数组之和大于等于s,求这个最小长度,如果不存在则返还0,原题以及例子如下, 上面这只是题目的基础要求,不考虑时间复杂度的情况下是比较容易解决的,但是这道题加了两个实现条件,要求能得到时间复杂度为O(n)和O(n * log n)的解法。————————想直接看题目要求解法的同学请跳往下一条分割线———————————–

2017-12-01 10:39:17 285

原创 646. Maximum Length of Pair Chain(M)

题目描述给定n对数,在每对数了,第一个数总是小于第二个数。现在我们定义,数对(c,d)能与数对(a,b)组成一条链且在(a,b)之后,当且仅当c>b时。给定一个数对的集合,求出这个集合中的最长数对链。不用使用完所有的数对,并且可以以任意的顺序选择数对加入链条中。 原题干以及例子如下, 首先,我们来提取题干中隐藏的一些信息。这是一个集合且后面强调了可以以任意的顺序选择数对,这表示数对的存放方式是无

2017-11-25 21:20:55 361

原创 174. Dungeon Game(H)

题目描述一个恶魔抓住了公主,并且把她囚禁在地牢的右下角。这个地牢是个M*N的矩阵。 骑士被囚禁在地牢的左上角,骑士必须穿过重重关卡拯救公主。 骑士有初始生命值由一个正数表示。如果他的生命值降为0及其以下,则骑士死亡。在地牢里的一些房间有恶魔看守,当骑士进入这些房间时,会损失相应生命值(即矩阵中对应的负数);而另外一些房间则存在一些物品,能给骑士加相应的血量(即矩阵中的正数)。 为了能尽快到达公主

2017-11-18 20:08:12 405

原创 396.Rotate Function(M)

题目描述给定一个数组A,n是它的长度。假定Bk为将数组A循环右移k位后的结果。我们定义一个 旋转函数F,如下: 求F(0),F(1),…,F(n-1)中的最大值 原题以及例子如下, 如果没有时间的限制,那么这道题可以很容易的使用暴力求解法。可惜并不能。那么这个时候就要观察了,既然不能暴力求解,那么F(k)之间肯定会存在一种联系。这里有个很巧妙的地方,如下所示 Bk[i] = Bk-1

2017-11-12 23:23:47 685

原创 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 890

原创 406. Queue Reconstruction by Height(M)

题目描述排列好一队人,每个人身上有两个属性,一个是自己的身高height,一个是站在自己前面比自己高或者一样高的人的个数,打乱这队人原来的顺序,要求你根据给定的这一队人和他们的数据恢复他们原来的站位并输出,下面是原题描述以及例子,英语好的同学可以自行理解, 按题目的分类,这里要求使用到贪心算法,那么要怎么贪心才能不破坏最优解的情况下,一步一步求解呢? 根据观察,可以得到这么几个结论。 1. 如

2017-10-28 23:01:25 209

原创 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 782

原创 650.Two Keys Keyboard(M)

题目描述最初给你一个字母A,你每一步能进行两种操作: 1. 对当前所有字母进行复制 2. 粘贴之前最后一次复制的字母到当前字符串的尾部 给定一个字符串的长度n,求解最小使得字符串长度变为n的步数,下图是题中的一个例子 刚开始读完题意,一下就想到可以用宽度优先搜索来解这道题,因为每一步有两种选择,相当于这是一颗二叉树,你要找到最靠近根的目标节点,所以可以用BFS完成。写完之后,发现果然

2017-10-14 10:56:24 382

原创 91. Decode Ways(M)

题目描述这道题大致的意思就是给你一个全是数字的字符串,按照提供的编码存在几种把数字转化为字母的方式,题目大体上就是这个意思。从题目给出的例子可以看出,之所以存在翻译时的歧义(多种翻译结果),是因为对字符串的分割的不同,比如“123”可以分割为“1,2,3”,“12,3”“1,23”这三种情况。可能目前还看不出什么,但是你可以试着写一写,比如“1”存在一种翻译方式,“12”存在两种翻译方式,“122”

2017-10-02 22:57:11 228

原创 494. Target Sum(M)

494. Target Sum(M)题目描述给定一个数组和一个目标值,通过给数组里的数加上正负号,使得他们的和为目标值,求解总共有多少种加正负号的方法,下面是原题干以及一个例子:题意很简明,但刚开始我拿到有点懵,因为这道题是在深度优先搜索这个分类里的,后来恍然大悟,我结合一张图来阐述下的思路,以数组[2,1,3],目标1,为例子:从题意可以看出,数组里的每一个数有两种选择,即正或者负,那么我们可以数

2017-09-22 21:55:00 524

原创 498.Diagonal Traverse-M

498.Diagonal Traverse(M)题目内容给定一个M*N大小的矩阵(M行,N列),要求返还一个以下图所示方法得到的一个一维数组这道题

2017-09-10 20:06:59 421

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除