leetcode
wx_14678
一代人终将老去,但总有人正年轻
展开
-
从最小(大)栈到最大(小)队列,再到单调队列
引言很长一段时间没有写博客,也没有刷 leetcode 了。这两天又刷了一下,发现还是生疏了不少。做 239. 滑动窗口最大值 的时候,发现有用单调队列的做法,突然想起了 剑指 Offer 59 - II. 队列的最大值 可不就是单调队列嘛。所以和最大(小)栈问题一起,做个总结记录以备查看。最小栈问题简单说明一下最小栈问题:设计一个栈结构,可以支持栈原有的push, pop,top 操作,同时加入 min 操作可以返回当前栈的最小值。问题分析: 原本栈是一个单进单出的结构,先进后出。要求返回栈的最小原创 2020-07-18 22:47:47 · 270 阅读 · 1 评论 -
leetcode题集: 72. 编辑距离
题目大意:给定两个字符串,求解将 word1 转化成 word2 的最小操作。操作有三个,替换,增加和删除。题目分析:突然给定一个这样的题目,求解有效可能集合中的最优解。第一想法当然就想到了动态规划,可是怎么找状态转移方程呢?又应该选择哪个状态呢?一般能想到两个,一个是dp[i][j], 表示长度为 i 的Word1 转化为长度为 j 的word2所需要的最小操作数;另一个就是用一维...原创 2020-04-06 15:31:37 · 74 阅读 · 0 评论 -
leetcode题集: 面试题 01.06. 字符串压缩
leetcode中文最近出的每日一题活动,一道简答题,但是却让我提交了好几次,而且错了好几次。 故此记录一下题目分析:字符串压缩, 没啥特别的意义。就是字母加数字的方法,很常见。要求,如果压缩之后的字符串比原来的没有变短,那就返回原来的字符串,否则返回压缩之后的字符串。题目意思很清楚,很明了,那就直接开始上代码了,很快可以写出来:class Solution {public:...原创 2020-03-16 23:36:28 · 163 阅读 · 0 评论 -
leetcode题集: 45. Jump Game II
题目大意:就是给定一个非负数组,求到最后一个的最小跳数。每次跳动范围不超过当前索引的数值。举个栗子,当前在0号位置,最多只能跳到+2,也就是2号位置。题目分析:第一感觉,就是个动态规划嘛。很快动态转移方程:dp[j] = min(dp[j], dp[i]+1) ,i = 0....j。于是很快写出了以下代码:class Solution {public: int jump(...原创 2020-03-05 12:35:26 · 116 阅读 · 0 评论 -
leetcode题集: 44. Wildcard Matching
题目大意:简化版的正则表达式匹配,给定一个待匹配字符串和一个pattern字符串,返回pattern字符串是否能匹配。特殊匹配符号有两个,'*' 和 '?'。题目分析:首先看两个特殊符号的表示范围'?': 所有单个字符;(一个坑,这里单个字符不包括空,提交次数+1)'*': 任意字符序列,可以是空序列考虑使用递归来解决这个问题。匹配过程分为几种情况来讨论:1) s 匹配...原创 2020-03-04 23:11:21 · 118 阅读 · 0 评论 -
leetcode题集: 41. First Missing Positive
题目大意:给定一个乱序的整型数组,找出最小的缺失的正整数。简单来说,就是找出数组中没有的最小正整数题目分析:题目的难点在于他的要求,要求O(n)时间和常量空间。这下就直接把排序(时间复杂度不满足)和额外数组打表(空间复杂度不满足)两个方法给排除了,这是我第一反应能想到的两个方法。简单解释一下打表:常用的空间换时间方法,即用一个数组记录,数组位置上的元素放的就是 位置的值,也即 a[i] ...原创 2020-03-04 12:01:11 · 99 阅读 · 0 评论 -
leetcode题集: 32. Longest Valid Parentheses
题目大意:求最长有效括号的长度。此前有个简单的题,就是求所给字符串括号是否匹配,这个题的话所给的字符串并非都是有效的括号匹配。题目分析:看这个题首先需要知道有效括号的几种情况。一种呢,就是串联并列的括号,eg. "()()()()()()"; 二是括号嵌套的情况,eg. "(((())))";那么第三种呢就是两种的结合了,既有并列又有嵌套,"()((()()))"首先嵌套...原创 2020-03-03 11:47:59 · 82 阅读 · 0 评论 -
leetcode题集: 29. Divide Two Integers
一道看起来比较简单的问题,但是提交了好几次才提交上去,不是超时就是某些边界问题考虑不全面。题目大意:整数除法。要求不要乘除和模运算等。特别说明:除数和被除数都是32位有符号整数;除数不会为0(不用自己考虑了);第三点(之前没注意):溢出则返回最大整数题目分析:题目读下来,还是大致清楚的。那么既然不能用乘除和模运算,那只能采用减法了吧。但是由于正负数边界问题,修改了几次;而且说明...原创 2020-02-27 13:47:19 · 195 阅读 · 0 评论 -
leetcode题集: 37. Sudoku Solver
37.Sudoku Solver之前说到那个数独的有效性检测,并不是要求解,而是简单的做个判断,这道题就是数独的求解。题目大意:数独求解。假定每次的样例有且仅有一个唯一解题目分析:看到这个问题,第一反应就是使用递归来解决。递归步骤可以分为:1)空格寻找 。 2)有效数字寻找(即一行,一列,一个3x3单元格中每个数字都只能出现一次)递归终止条件:空格检查完了最后一个空格...原创 2020-02-26 20:21:25 · 89 阅读 · 0 评论 -
leetcode题集: 36. Valid Sudoku
第15题:36.Valid Sudoku题目大意:检查数独是否有效;即每行,每列和每个3x3小格子是否存在重复的数字。注意要点:1. 数独有效并不等同于有解(开始以为是要解出数独,还以为难度有点大)2. 只有提到的单元需要进行规则检测,也即是row,col和3x3 box需要做这些检测3. 所给字符只会有数组1-9和 '.'4. 边界大小9x9题目分析:题目...原创 2020-01-30 17:22:51 · 111 阅读 · 0 评论 -
leetcode题集: 28. Implement strStr()
第14题:28. Implement strStr()题目大意:给出两个字符串,求解待匹配串在主串中的位置,如果不是主串的一个子串,则返回-1;如果待匹配串为空的话,则返回0;这与C 中的strsstr()函数一致。题目分析:一个字符串匹配的求解。第一个印象就是想到了KMP算法,字符串匹配。但是抱着试一试的心理,也用暴力法做了一个求解。暴力法求解:直接莽,看代码:clas...原创 2019-11-18 11:13:58 · 95 阅读 · 0 评论 -
leetcode题集: 210. Course Schedule II
第13题:210.Course Schedule II类似之前写的那篇,这里就不分析了。题目具体分析请见leetcode题集: 207. Course Schedule和 拓扑排序 两篇文章。就是拓扑排序,加个打印输出拓扑序列。这里直接贴代码了:class Solution {public: vector<int> findOrder(int numC...原创 2019-11-01 11:23:11 · 117 阅读 · 0 评论 -
leetcode题集: 207. Course Schedule
上次写了关于拓扑排序的写法,今天这个题就是关于拓扑排序的应用与改进。第12题:207.Course Schedule文章大意:课程安排,课程之间有依赖性。给定课程数,和课程之间的依赖,判断课程能否顺利完成。题目分析:这不就是之前写的拓扑排序能干嘛吗?所以这是一个拓扑排序的问题,所以啊直接开始干。要注意的是,后面给数组中,后面一个表示前驱节点。即[1,0]表示的是0->1....原创 2019-10-31 11:42:58 · 156 阅读 · 0 评论 -
leetcode题集:343. Integer Break
第11题:343.Integer Break怎么说呢,水题一时爽,一直水题一直爽。题目大意:给定一个正整数,使他等于至少两个数之和,并求这些加数的最大积。题目分析:题目意思很清楚,就是求给定和的加数的最大积。动态转移方程:,其中。直接上代码:class Solution {public: int integerBreak(int n) { if(n=...原创 2019-10-26 12:20:00 · 103 阅读 · 0 评论 -
leetcode题集: 357. Count Numbers with Unique Digits
第10题:357.Count Numbers with Unique Digits题目大意:求给定位数的不包含重复数字的整数。。。不用说了,超级大水题,就是一个排列组合,简单的数学题 。题目分析:求出当前位数非重复的整数数量,非要说动态规划,那就是加起了之前低位数的。(ps: 我不是为了凑题数,手动狗头)。直接上代码好了:class Solution {public: ...原创 2019-10-26 11:11:05 · 107 阅读 · 0 评论 -
leetcode题集: 322. Coin Change
实在是太懒了,写博客真的懒得写。今天就一起写几篇动态规划的好了第9题:322.Coin Change题目大意:就是换零钱!给出可换的零钱种类,求最后换得零钱的最小张数(coin的个数),每种可换的零钱数目无限。题目分析:思路很明确,就是找零钱从最大的开始找呗,依次找当前可换的最大数额的零钱,显然可以用动态规划的思想解决,是一个很简单的动态规划问题,状态转移方程: ...原创 2019-10-26 10:54:36 · 123 阅读 · 0 评论 -
leetcode题集:561. Array Partition I
第二天:561.Array Partition I一道水题,给定2n个数的数组,求n对二元组的最小值之和的最大值,分析发现,只需对数组进行一个从小到大的排序,取n=0,2,4,6....2n-2即是所求之和的最大值。完整代码如下:class Solution {public: int arrayPairSum(vector<int>& nums) {...原创 2019-03-19 22:16:49 · 116 阅读 · 0 评论 -
leetcode题集:299. Bulls and Cows
第三天:299. Bulls and Cows题目大意就是两个字符串,一个秘密字符串,一个猜测字符串,然后比较这两个字符串。如果数字和位置都对应上,则是A类型;如果只是数字对上,位置对不上,则是B类型,问AB类型各有多少。如果重复的是一对多,则只算一个。题目分析:A类型好求,就是一个循环完事儿了。B类型需要比较两个字符串中相同数字的个数,考虑到每一位都是数字,即数字类型是有限个数,即0...原创 2019-03-20 22:15:06 · 172 阅读 · 0 评论 -
leetcode题集: 5. Longest Palindromic Substring
第四天:5.Longest Palindromic Substring这一阵子有点子忙,就没有做题了,今天想起很久没做又做了下。题目大意:求最长回文子序列,可能有多个,输出一个即可。题目分析:初看到这个题,就想起了以前做过的一道最长回文子序列的题目,动态规划的方法解决。然而测试的时候发现了问题,这个题目要求的子序列是连续的,所以就差别于之前做的最长回文子序列问题。最后考虑到这个字...原创 2019-04-16 22:13:55 · 67 阅读 · 0 评论 -
leetcode题集: 8. String to Integer (atoi)
第五题:8.String to Integer (atoi)题目大意:写一个字符串转有符号整数的函数,实现字符串到数的转换。题目分析:问题不难,主要是题目的要求要读清楚,还有看测试用测(我没看测试用例,导致漏了两条,提交了4次才上。菜得很真实)题目要求:1. 空字符串和第一个字符为非法字符(除去数字和'+' '-')的,函数不做处理,默认返回0;2. 字符串中有非法字...原创 2019-04-16 22:38:47 · 150 阅读 · 0 评论 -
leetcode题集: 306. Additive Number
第6题:306. Additive Number题目大意:给定一串字符串,判断该字符串是否能够切分成多个个子字符串,使得前两个子串对应数字之和等于后一个子串对应数字之和,类似斐波拉契数列。题目分析:题目的意思很明显了,就是要看清楚题目的要求(又是因为要求没看清楚,所以提交了4 5次才提交上去,菜是原罪)。主要要求总结如下:1. 基本要求,后一个数字是前两个数字之和,第1 2个数字...原创 2019-05-27 16:24:25 · 106 阅读 · 0 评论 -
leetcode题集: 134. Gas Station
第7题:134.Gas Station题目大意:就是给定个数的加油站、站点的油储量、站点之间的耗油量,油箱不限,问从哪个站点出发可以走完全程。题目分析:问题比较简单,油箱容量不限,所以问题就在于站点油量可否能够供给带下一个站点。即从第一个满足要求的站点出发,遍历,如果能够顺利走完则满足要求;否则,继续寻找下一个满足要求的初始站点,有则返回。直至搜索完毕。给出完整代码如下:...原创 2019-06-07 16:01:04 · 97 阅读 · 0 评论 -
leetcode题集: 2. Add Two Numbers
第8题:2.Add Two Numbers题目大意:给定两个非空链表表示两个非负的整数,然后数字存储是反转顺序存储的(如例子中给出的342,存储为2->4->3,不用自己反转了。。。),每个节点只存储单个数字(0-9),相加返回结果。题目明确指出不会有前导0。问题分析:反转都帮我们做了,那就直接加就完事儿了。数据结构由题目代码给出。具体完整代码如下:/** * D...原创 2019-07-20 15:56:51 · 139 阅读 · 0 评论 -
leetcode题集:559. Maximum Depth of N-ary Tree
最近开始刷leetcode,博客以作记录。第一天:559. Maximum Depth of N-ary Tree给定树的数据结构定义:/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(i...原创 2019-03-19 21:54:13 · 164 阅读 · 0 评论