
刷题训练
文章平均质量分 83
题型训练
"派派"
这个作者很懒,什么都没留下…
展开
-
单调栈入门详解
用栈模拟,从后往前遍历,若栈为空,则填入数组的大小(这里方便计算宽度),若当前元素比栈顶元素小,则持续将栈顶元素出栈,直到栈顶元素比当前元素小,填入栈顶元素下标)原创 2023-04-05 18:20:56 · 359 阅读 · 0 评论 -
完全背包理论基础
这就很容易想到了,在遍历完全背包时,由于每个相同物品可以放入多次,所以再遍历背包容量时应该从小到大去遍历。当使用二维数组去遍历的时候,遍历背包容量时是从小到大遍历的。例如:(当时是先遍历物品,再遍历背包)思路:硬币的面额对应的是物品,凑成的总金额是背包容量。先看一维数组的遍历顺序,前面是先遍历物品,在遍历背包容量(遍历背包容量时是从小到大,才能确保同一个物品可以放入多次)。(前面是先遍历物品,后面遍历背包的),那么遍历顺序是否可以改变呢?用二维数组时,也是可以先遍历背包容量,再去遍历物品。原创 2023-01-11 21:13:10 · 270 阅读 · 0 评论 -
01背包问题详解
dp[j]有两个选择,一个是取自己dp[j],一个是取dp[j - weight[i]] + value[i],取最大值,递归公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);在使用二维数组的时候,递推公式:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);解释:dp[i][j]的含义:从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。原创 2023-01-09 17:01:31 · 685 阅读 · 0 评论 -
滑动窗口题型
最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。的子串,返回这些子串的起始索引。不考虑答案输出的顺序。所有字符的子串,则返回空字符串。所有字符的最小子串。题目描述:给你一个字符串。题目描述:给定两个字符串。原创 2023-01-03 10:24:37 · 452 阅读 · 0 评论 -
回溯算法题型
其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。该列表不能包含相同的组合两次,组合可以以任何顺序返回。返回的解集中,子集可以按。用一个used数组来标识数字是否被访问过。题目描述:给定一个可包含重复数字的序列。中的每个数字在每个组合中只能使用。给定一个候选人编号的集合。解集不能包含重复的组合。返回所有不重复的全排列。所有可能的有效组合的列表。中所有可以使数字和为。原创 2023-01-01 13:57:03 · 532 阅读 · 0 评论 -
二叉数题型2
情况3:p,q节点都在当前节点的左边或者右边,那么当前节点往左或者右边遍历,重复上面的的操作。上面的思路很好理解,但是若p,q节点都是叶子节点,都是兄弟节点。(lowestCommonAncestor)每往后走一步,(_istree)都要遍历到最后才能找到,(lowestCommonAncestor)也要走到最后,就是p,q的父亲节点才能结束。中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大。原创 2022-12-29 21:27:45 · 231 阅读 · 0 评论 -
二叉树题型
目录二叉数遍历迭代法1.1前序遍历题目描述1.2中序遍历1.3后续遍历二叉树最小深度二叉树所有路径中序后序构造二叉树验证二叉搜素树前序遍历顺序:根—左—右;解法1:用栈来进行中间过程处理,结果存入vector中思路:每次先处理中间的结点,先将根结点入栈,再将右孩子入栈,左孩子入栈。每次从栈顶拿数据,重复操作。 代码演示: 解法2:中序遍历是先访问根结点,然后访问左子树。我们可以直接把先访问的根结点直接存入vector中,然后去遍历它的左子树。重复上一次操作。当它的左子树为空时,则去遍历它的右子树。(右原创 2022-12-24 20:29:19 · 344 阅读 · 0 评论 -
如何使用 哑节点(dummy node),高效解决问题
目录前言:1.19. 删除链表的倒数第 N 个结点2.24. 两两交换链表中的节点3.82. 删除排序链表中的重复元素 II前言:在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummy node),它的 next 指针指向链表的头节点。这样一来,我们就不需要对头节点进行特殊的判断了,可省去许多麻烦。1.19. 删除链表的倒数第 N 个结点问题描述:思路:先求出链表长度,后找到要被删除节点的前一个节点。第二次遍历是是从哑巴节点开始的。代码:...原创 2022-04-25 17:30:07 · 5065 阅读 · 3 评论