
LeetCode
z岁月无声
这个作者很懒,什么都没留下…
展开
-
LeetCode-327. 区间和的个数
同时是对于前缀和数组进行分析,对于pre[i],当j>i,pre[j]位于区间[pre[i]+lower,pre[i]+upper]之间是合法的,因此可以从左到右遍历pre,对于pre[i],查询线段树中下标pre[i]的个数,然后将区间[pre[i]+lower,pre[i]+upper]加1,需要注意将pre[i],pre[i]+lower,pre[i]+upper哈希离散化。思路归并排序/树状数组(线段树)2.树状数组(线段树)code2.数组数组。...原创 2022-07-25 23:45:50 · 279 阅读 · 0 评论 -
LeedCode-862. 和至少为 K 的最短子数组
对于右边窗口,若i=pre[j],显然可以将pre[i]从窗口中去除,利用j作为左区间显然更好。利用滑动窗口维护一个合法区间,遍历i=0->n,对于当前下标j。而对于左边窗口,pre[i]已经求得其最小区间,故可以将其从窗口去除。先求出数组前缀和,问题就转变成前缀和之差不小于k的最小区间。思路前缀和+滑动窗口。......原创 2022-07-20 18:53:00 · 247 阅读 · 0 评论 -
LeetCode-188. 买卖股票的最佳时机 IV
Leetcode 188原创 2022-07-06 18:22:35 · 186 阅读 · 0 评论 -
LeetCode-1825. 求出 MK 平均值
地址:https://leetcode-cn.com/problems/finding-mk-average/思路:https://leetcode-cn.com/problems/finding-mk-average/solution/c-san-ge-multiset-jian-dan-mo-ni-by-newh-y4q9/维护 3 个 multiset:lower(保存最小的 k 个数)、middle(中间的数)、upper(保存最大的 k 个数)。插入操作如果 num≤max(lowe.原创 2021-04-16 02:58:12 · 367 阅读 · 0 评论 -
LeetCode-32. 最长有效括号
地址:https://leetcode-cn.com/problems/longest-valid-parentheses/思路:利用栈记录入栈字符的下标位置,从头处理字符串,对于s[i],若栈头元素与其匹配,则将其从退栈,并求其长度并保存最大长度,若不匹配则入栈。Code:class Solution{public: int longestValidParentheses(string s){ stack<int> sta; int res=0; for(int i=0.原创 2021-01-06 20:32:36 · 160 阅读 · 0 评论 -
LeetCode-102. 二叉树的层序遍历
地址:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/思路:BFS/DFS思路一、BFS:利用广度优先搜索逐层搜索,每次搜索一层,将下一层的加入队列中即可思路二、DFS:利用深度优先搜索,则为从左向右搜索,对于层数可用变量进行记录即可Code BFS:class Solution { vector<vector<int>> res; queue<TreeNode *.原创 2020-12-18 14:23:26 · 131 阅读 · 0 评论 -
LeetCode-714.买卖股票的最佳时机含手续费
地址:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/思路:贪心 || DP思路一、贪心:利用贪心思路,当出现峰值(买卖间有正差值)时即将股票卖掉,同时寻找下一个峰值。对于卖出时需要手续费fee,其峰值相当于卖出价格prices[i]-fee,记录当前最小值Min,当prices[i]-fee>Min时,则答案加上其差值res+=prices[i]-fee-Min;同时令 .原创 2020-12-04 00:43:35 · 177 阅读 · 0 评论 -
LeetCode-239. 滑动窗口最大值
地址:https://leetcode-cn.com/problems/sliding-window-maximum/思路:优先队列 || 单调队列 || dp思路一、优先队列:利用优先队列维护区间的最大值,同时将记录其下标 <val,id>. 遍历数组nums[i],将优先队列首节点不在k范围内的去除掉,在取首节点即可。时间复杂度O(nlogn)思路二、单调队列:利用双端队列来维护一个单调递减队列,从队列尾部加入值,队列头部取最大值和去除非法数据。遍历数组,从双端队列末尾加入值num.原创 2020-11-27 09:47:28 · 160 阅读 · 0 评论 -
LeetCode-138. 复制带随机指针的链表
地址:https://leetcode-cn.com/problems/copy-list-with-random-pointer/思路:map || 思维思路一、map:对于原链表head以及复制链表hd,可以用map[head]=hd进行一一对应,这样在处理随机random指针时,直接用map对应到相应复制链表即可。思路二、思维:对于复制链表来说随机指针由于找不到对于位置关系不好处理,因此可以将复制链表的节点插入到原链表对应节点后面,例如p1->pp1->p2->pp2->.原创 2020-11-26 00:27:11 · 139 阅读 · 0 评论 -
LeetCode-206. 反转链表
地址:https://leetcode-cn.com/problems/reverse-linked-list/思路:双指针 || 递归一、双指针:从链表头结点p=head开始反转,需要先保存pi=p->next,再将p->next指向p本身,同时记录已反转链表的头结点head=p(而初始头结点为NULL),然后遍历到下一个节点即可二、递归:思路相同,递归到下一节点,在将当前节点与其下一节点指针反转head->next->next=head,然后令head=NULL(使反转后.原创 2020-11-22 22:39:01 · 152 阅读 · 0 评论 -
LeetCode-337. 打家劫舍 III
地址:https://leetcode-cn.com/problems/house-robber-iii/198.打家劫舍地址: https://leetcode-cn.com/problems/house-robber/思路:树状dp对于根节点为 rt 的子树,dp[rt][k]为其根节点取和不取(k=0/1)时子树的最大价值,ld,rd分别为其左右节点,那么dp[rt][0]=max(dp[ld][0],dp[ld][1])+max(dp[rd][0],dp[rd][1]);dp[rt][1.原创 2020-11-21 18:07:08 · 136 阅读 · 0 评论 -
LeetCode-31.下一个排列
地址:https://leetcode-cn.com/problems/next-permutation/思路:通过模拟s[1,5,8,6,4,2]的下一个排列,n为其排列长度1.首先是从末尾向前找首个 r 使 s[r]>s[r-1],翻转s[r,n-1];即s[r]=s[1]=5,因为对于[8,6,4,2]已经是最大的排列了,因此需要将其转到最小的排列。2.在s[r,n-1]找首个 i 使 s[i]>s[r-1],交换s[i],s[r-1];在第一步时s[r,n-1]翻转变成了[2.原创 2020-11-20 11:30:57 · 124 阅读 · 0 评论 -
LeetCode-51. N 皇后
地址:https://leetcode-cn.com/problems/n-queens/思路:DFS+剪枝利用boo[x][y]判断(x,y)是否为皇后在DFS搜索第k层时,若boo[k][i]为0,将其即为皇后,同时将其本身和其列与斜线b[][]+=1即可Code:class Solution { vector<string> iv; vector<vector<string>> res; vector<vector<int>>.原创 2020-11-19 20:38:35 · 119 阅读 · 0 评论 -
LeetCode-95. 不同的二叉搜索树 II
地址:https://leetcode-cn.com/problems/unique-binary-search-trees-ii/思路:DFSf(i): 以 i 为根的二叉搜索树个数s(n): n个节点的二叉搜索树个数s(n)=f(1) + f(2) + … + f(n)f(i) = s(i-1)*s(n-i)则s(n) = s(0)*s(n-1) + s(1)*s(n-2) + … + s(n-1)*s(0);通过s(n)以 i 为根进行构造Code:class Solution {.原创 2020-11-19 11:41:12 · 172 阅读 · 0 评论 -
LeetCode-96. 不同的二叉搜索树
地址:https://leetcode-cn.com/problems/unique-binary-search-trees/思路:一:dpf(i): 以 i 为根的二叉搜索树个数s(n): n个节点的二叉搜索树个数s(n)=f(1) + f(2) + … + f(n)f(i) = s(i-1)*s(n-i)则s(n) = s(0)*s(n-1) + s(1)*s(n-2) + … + s(n-1)*s(0);二:卡特兰数s(n) = s(0)s(n-1) + s(1)s(n-2) + .原创 2020-11-19 10:51:31 · 139 阅读 · 0 评论 -
LeetCode-754.到达终点数字
地址:https://leetcode-cn.com/problems/reach-a-number/思路:首先对于target,其正负结果是一样的,其负值就相当于正值走的路径方向相反,因此对其考虑正值设最少走 n 步,那么首先 s=n∗(n+1)2⩾targets = \frac{n*(n+1)}{2} \geqslant targets=2n∗(n+1)⩾target.则 n=sqrt(2*target);若 s = target.则 res=n;若 s < target.则 ++.原创 2020-11-18 23:30:34 · 272 阅读 · 0 评论 -
LeetCode-946. 验证栈序列
地址:https://leetcode-cn.com/problems/validate-stack-sequences/思路:用栈模拟其出栈序列popped[],遍历pushed[l],popped[l1],将pushed[l]压入栈sta,随后比较头结点sta.top()是否与popped[l1]相等,相等则一直将其出栈直到不相等,若pushed[]全部入栈sta后sta.top()与popped[l1]不相等则其不合法。Code:#include<iostream>#i..原创 2020-11-18 02:17:32 · 220 阅读 · 0 评论 -
LeetCode-968.监控二叉树
地址:https://leetcode-cn.com/problems/binary-tree-cameras/思路:贪心/树状dp1.贪心:对于树来说,监控父节点一定不监控子节点覆盖的点多,因此只要从叶子节点处贪心,同时记录当前节点的状态即可,节点的有三种状态:0-节点未被覆盖、1-节点被覆盖但不是监控点、2-节点为覆盖点2.树状dp:节点同样是这三种状态,dp[i][j]为子树 i 为 j 状态时被覆盖所需要监控节点的最小数量再对父节点的左右节点是否存在分类讨论即可Code 1:..原创 2020-09-22 12:28:18 · 387 阅读 · 0 评论 -
LeetCode-105. 从前序与中序遍历序列构造二叉树
地址:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/思路:通过对先序遍历和中序遍历的遍历顺序分析,对于先序遍历,第一个节点一定是根节点,再定位到中序遍历中当前根节点的位置,可以将先序遍历拆分成两个子树的先序遍历,这样就可以利用递归将遍历集合一步步缩小,从而得到二叉树。Code:/** * Definition for a binary tree node..原创 2020-09-22 12:04:12 · 127 阅读 · 0 评论 -
LeetCode-30.串联所有单词的子串
地址:https://leetcode-cn.com/problems/substring-with-concatenation-of-all-words/思路:用无序map保留words,遍历字符串s,同时按照words中单词的长度分段处理字符串s,这样可以不必每次清空mapCode:class Solution {public: vector<int> ...原创 2020-01-14 22:40:21 · 337 阅读 · 0 评论 -
LeetCode-29.两数相除
地址:https://leetcode-cn.com/problems/divide-two-integers/思路:运用位移运算,由大到小依次判断即可Code:class Solution {public: int divide(int dividend, int divisor) { int INF=((long long)1<<31)-...原创 2020-01-14 22:35:31 · 295 阅读 · 1 评论 -
LeetCode-28. 实现 strStr()
地址:https://leetcode-cn.com/problems/implement-strstr/思路:KMP算法Code:class Solution {public: void GetNext(string str,int Next[]){ Next[0]=-1; int k=0; for(int i=1;i&...原创 2020-01-14 20:32:23 · 169 阅读 · 0 评论 -
LeetCode-27. 移除元素
地址:https://leetcode-cn.com/problems/remove-element/思路:覆盖操作即可Code:#include<iostream>#include<vector>#include<set>using namespace std;class Solution {public: int rem...原创 2020-01-07 16:04:36 · 148 阅读 · 0 评论 -
LeetCode-26. 删除排序数组中的重复项
地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/思路:对于相同的数覆盖掉即可Code:#include<iostream>using namespace std;class Solution {public: int removeDuplicates(vec...原创 2020-01-07 16:02:44 · 146 阅读 · 0 评论 -
LeetCode-25. K 个一组翻转链表
地址:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/思路:在翻转时,保存连续的三个节点进行翻转,以及注意翻转区间和两端的连接Code:#include<iostream>#include<algorithm>#include<vector>#include<que...原创 2020-01-07 16:00:37 · 227 阅读 · 0 评论 -
LeetCode-24.两两交换链表中的节点
地址:https://leetcode-cn.com/problems/swap-nodes-in-pairs/思路:每次循环记录要交换的两节点和前一个节点,然后做交换即可Code:#include<iostream>#include<algorithm>#include<vector>#include<queue>usin...原创 2020-01-06 18:57:04 · 192 阅读 · 0 评论 -
LeetCode-23.合并K个排序链表
地址:https://leetcode-cn.com/problems/merge-k-sorted-lists/思路:一、每次比较k个链表的大小,在取最小的二、利用优先队列可优化每次k个链表的比较Code:#include<iostream>#include<algorithm>#include<vector>#include<...原创 2020-01-06 18:54:53 · 168 阅读 · 0 评论 -
LeetCode-22.括号生成
地址:https://leetcode-cn.com/problems/generate-parentheses/思路:一、搜索,通过对左括号位置的搜索,最终判断其是否合法即可二、DP,对于dp[n]='('+dp[i]+')'+dp[n-i-1]Code:#include<iostream>#include<algorithm>#include&...原创 2020-01-06 18:52:21 · 179 阅读 · 0 评论 -
LeetCode-21. 合并两个有序链表
地址:https://leetcode-cn.com/problems/merge-two-sorted-lists/思路:对两指针依次比较大小即可,注意对于空链表的处理Code:#include<iostream>#include<algorithm>#include<vector>#include<unordered_map&g...原创 2020-01-05 17:04:01 · 237 阅读 · 0 评论 -
LeetCode-20. 有效的括号
地址:https://leetcode-cn.com/problems/valid-parentheses/思路:利用栈stack处理Code:#include<iostream>#include<algorithm>#include<vector>#include<stack>#include<unordered_m...原创 2020-01-05 17:02:16 · 175 阅读 · 0 评论 -
LeetCode-19. 删除链表的倒数第N个节点
地址:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/思路:遍历一遍得到链表的长度len,在遍历一遍删除第(len-n+1)节点即可Code:#include<iostream>#include<algorithm>#include<vector>#include&...原创 2020-01-05 16:59:51 · 193 阅读 · 0 评论 -
LeetCode-18. 四数之和
地址:https://leetcode-cn.com/problems/4sum/思路:通过遍历中间两个数,再通过两指针从数组两端开始搜索判断,同时注意对重复元素的判断Code:#include<iostream>#include<algorithm>#include<vector>#include<unordered_map>...原创 2020-01-04 17:35:31 · 163 阅读 · 0 评论 -
LeetCode-17. 电话号码的字母组合
地址:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/思路:DFS搜索即可Code:#include<iostream>#include<algorithm>#include<vector>#include<unordered_map>...原创 2020-01-04 17:33:22 · 226 阅读 · 0 评论 -
LeetCode-16. 最接近的三数之和
地址:https://leetcode-cn.com/problems/3sum-closest/思路:一:先排序,再遍历前二个数,在通过二分查找第三个数二:先排序,再遍历中间数,利用两指针从数组两端开始扫描Code:#include<iostream>#include<algorithm>#include<vector>#inclu...原创 2020-01-04 17:31:54 · 160 阅读 · 0 评论 -
LeetCode-15. 三数之和
地址:https://leetcode-cn.com/problems/3sum/思路:一、排序后枚举前两个,再二分查找第三个。二、排序后枚举中间元素,再利用两指针从两端扫描,对于重复的三元组,需做处理Code:#include<iostream>#include<algorithm>#include<vector>#include&...原创 2020-01-03 16:43:13 · 212 阅读 · 0 评论 -
LeetCode-14. 最长公共前缀
地址:https://leetcode-cn.com/problems/longest-common-prefix/思路:遍历判断即可Code:#include<iostream>#include<algorithm>#include<vector>#include<cmath>#include<map>#in...原创 2020-01-03 16:38:37 · 182 阅读 · 0 评论 -
LeetCode-13. 罗马数字转整数
地址:https://leetcode-cn.com/problems/roman-to-integer/思路:用unordered_map存下转换情况,对于4和9的判断,则看s[i+1]的值是否大于s[i]的值即可Code:#include<iostream>#include<algorithm>#include<vector>#inc...原创 2020-01-03 16:37:26 · 254 阅读 · 0 评论 -
LeetCode-12. 整数转罗马数字
地址:https://leetcode-cn.com/problems/integer-to-roman/思路:按照题意转换即可Code:#include<iostream>#include<algorithm>#include<vector>#include<cmath>#include<map>#inclu...原创 2020-01-02 18:09:50 · 204 阅读 · 0 评论 -
LeetCode-11. 盛最多水的容器
地址:https://leetcode-cn.com/problems/container-with-most-water/思路:一,先将直线(i,ai)按高度由小到大排序,再由大开始遍历ai,同时记录以遍历的直线的下标最值L,R,这样能够保证区间的高度是ai,然后记录与下标最值所形成的区间面积最大值即可 时间复杂度为O(n*log(n))二,博客https://blog.csdn....原创 2020-01-02 18:07:14 · 202 阅读 · 0 评论 -
LeetCode-10. 正则表达式匹配
地址:https://leetcode-cn.com/problems/regular-expression-matching/思路:见大佬博客https://blog.youkuaiyun.com/u013095333/article/details/90756943太强了orzCode:#include<iostream>#include<algorithm>...原创 2020-01-02 17:57:07 · 233 阅读 · 0 评论