leetcode
NO1._LUA
这个作者很懒,什么都没留下…
展开
-
判断字符串是否由另外两个字符串交织而成(动态规划杀我)
问题描述给出三个字符串s1, s2, s3,判断s3是否可以由s1和s2交织而成。例如:给定s1 =“aabcc”,s2 =“dbbca”,如果s3 =“aadbbcbcac”, 返回true如果s3 =“aadbbbaccc”, 返回false分析又是动态规划的题,好头疼,思绪混乱,又要去评论区翻代码看才明白要怎么做,枯了啊。主要就是用一个二维数组dp[i][j]记录s1[0…...原创 2020-05-03 21:55:23 · 1026 阅读 · 1 评论 -
求母串中出现字串的次数
题目描述给定一个字符串S和一个字符串T,计算S中的T的不同子序列的个数。字符串的子序列是由原来的字符串删除一些字符(也可以不删除)在不改变相对位置的情况下的剩余字符(例如,"ACE"is a subsequence of"ABCDE"但是"AEC"不是)例如:S =“rabbbit”, T =“rabbit”返回3分析我们需要一个二维数组dp(i)(j)来记录长度为i的字串在长度为j...转载 2020-04-30 16:23:30 · 502 阅读 · 0 评论 -
三角形找到最小路径和(最大路径和同理)
题目描述给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字,例如,给出的三角形如下:[↵ [2],↵ [3,4],↵ [6,5,7],↵ [4,1,8,3]↵]最小的从顶部到底部的路径和是2 + 3 + 5 + 1 = 11。注意:如果你能只用O(N)的额外的空间来完成这项工作的话,就可以得到附加分,其中N是三角形中的行总数。...原创 2020-04-29 23:29:46 · 272 阅读 · 0 评论 -
买入卖出股票的最佳时间(分不同的交易次数)
题目描述假设你有一个数组,其中第i个元素是某只股票在第i天的价格。设计一个算法来求最大的利润。你最多可以进行两次交易。注意:你不能同时进行多个交易(即,你必须在再次购买之前出售之前买的股票)。分析一只股在i天的时间内可以进行至多两次交易,买入-卖出-买入-卖出,目标是 最终利润=max{ -第一次买入价格+第一次卖出价格 - 第二次买入价格 + 第二次卖出价格}。因为刚学到贪心法,所以...原创 2020-04-29 15:23:51 · 980 阅读 · 0 评论 -
判断字符串是不是回文
题目描述判断题目给出的字符串是不是回文,仅考虑字符串中的字母字符和数字字符,并且忽略大小写例如:"A man, a plan, a canal: Panama"是回文"race a car"不是回文注意:你有没有考虑过字符串可能为空?这是面试时应该提出的一个好问题。针对这个问题,我们定义空字符串是回文 分析这让我想起昨天做的类似的题目,“给一串字符串找出最小的分割次数使分割后的每...原创 2020-04-28 20:30:49 · 512 阅读 · 0 评论 -
找到数组中最长的连续序列的长度
题目描述给定一个无序的整数类型数组,求最长的连续元素序列的长度。例如:给出的数组为[100, 4, 200, 1, 3, 2],最长的连续元素序列为[1, 2, 3, 4]. 返回这个序列的长度:4你需要给出时间复杂度在O(n)之内的算法分析这道题令我想起之前做过的一道题,是要在数组里面找到一个连续的子序列,这个序列能使元素和最大:这一题的解决办法是,遍历数组,如果后一个元素大于 ...原创 2020-04-27 19:53:59 · 1728 阅读 · 0 评论 -
字符串经过最少切割次数,使得切割后的每个字串都是回文串
题目描述给出一个字符串s,分割s使得分割出的每一个子串都是回文串计算将字符串s分割成回文分割结果的最小切割数例如:给定字符串s=“aab”,返回1,因为回文分割结果[“aa”,“b”]是切割一次生成的。分析设置两个变量 i 和 j,i 从字符串最后一个字符开始向前走,j 从 i 开始往后走到字符串结尾。设置数组dp[i]代表从 i 到s.length-1这段字符串要分割的最小次数,p...原创 2020-04-27 15:01:48 · 839 阅读 · 0 评论 -
拷贝无向图
题目描述本题要求复制一个无向图,图中每个节点都包含一个标签和它的邻居列表我们无向图用以下的方法序列化:• 节点的标签是互不相同的,• 我们使用“#”作为节点之间的分隔符,使用“,”作为节点标签和节点的节点邻居的分隔符。例如:现在有一个序列化的无向图{0,1,2#1,2#2,2}.这个无向图一共有3个节点,因此序列被#分隔成三部分第一个节点的标签是0,节点0和节点1,节点2之间有边...原创 2020-04-26 15:13:12 · 224 阅读 · 0 评论 -
环形路能否找到一个加油站使从此开始走完环形路油是够的
问题描述环形路上有n个加油站,第i个加油站的汽油量是gas[i].你有一辆车,车的油箱可以无限装汽油。从加油站i走到下一个加油站(i+1)花费的油量是cost[i],你从一个加油站出发,刚开始的时候油箱里面没有汽油。求从哪个加油站出发可以在环形路上走一圈。返回加油站的下标,如果没有答案的话返回-1。注意:答案保证唯一。分析因为n个加油站是环形分布,为了避免多余的取模运算,起点从最后一...原创 2020-04-26 13:43:28 · 330 阅读 · 0 评论 -
数组中只出现一次的数字(普通版+进阶版)
普通版题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。分析 利用“其他的数字都出现了两次”这个条件,我们知道两个相同的数做^运算等于0,那么可以对整个数组中的元素进行异或,所有出现了两次的数字都变为了0,剩下的是这两个只出现一次的数字异或的结果。又因为这两个数字不是相等的,那么异或结果必定至少会有一位是1,根据这个1为出现的位置si...原创 2020-04-25 20:34:08 · 163 阅读 · 0 评论 -
拷贝带随机指针的链表
题目描述现在有一个这样的链表:链表的每一个节点都附加了一个随机指针,随机指针可能指向链表中的任意一个节点或者指向空。请对这个链表进行深拷贝。A linked list is given such that each node contains an additional random pointer which could point to any node in the list or n...原创 2020-04-24 23:36:25 · 189 阅读 · 0 评论 -
重置单链表(L 0→L n →L 1→L n-1→L 2→L n-2→…)
题目描述将给定的单链表L: L 0→L 1→…→L n-1→L n,重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→…要求使用原地算法,并且不改变节点的值例如:对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}.Given a singly linked list L: L 0→L 1→…→L n-1→L n,reorder it to: ...原创 2020-04-24 17:31:26 · 678 阅读 · 0 评论 -
用栈前序、中序、后序遍历二叉树
前序遍历:先访问父结点,接着访问左孩子和右孩子中序遍历:先访问左孩子,接着父结点,最后右孩子后序遍历:先访问左右孩子,后访问父结点分析前序遍历(同时也是DFS)先将根节点进栈,当栈不为空的时候出栈,记下出栈的结点当子树不为空,依次进栈右子树和左子树中序遍历先将根节点进展,当栈不为空的时候先拿栈顶的元素如果有左孩子,进栈左孩子如果上一次访问了它的左孩子或者左孩子为空,出栈,并...原创 2020-04-23 22:20:29 · 461 阅读 · 0 评论 -
用插入排序对链表排序(如果有环怎么办?)
分析插入排序就是从头到尾选择一个结点插入到前面的有序数组或者链表中,如果是数组那么可以从当前待插入的元素往前搜索找到插入的位置,单链表只允许从头结点开始往后查找有序链表找到插入的位置。对于本题,先设置一个虚拟结点,后面跟的是排序好了的链表。为什么要设置虚拟结点目的是为了在后面的结点插入到这个带头单链表时可以不用分开考虑是否插入到表头的情况。最后再将排序好的链表的头结点的下一个返回就可以了。...原创 2020-04-23 15:47:39 · 145 阅读 · 0 评论