自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法通关村第十九关——透彻理解动态规划(青铜)

在《算法导论》中,把动态规划的 programming 解释为「是一种表格法」。我觉得这一点很恰当、很形象。表格法:实际上,解决动态规划的问题,很多时候就是在填写一张表格。

2023-09-10 20:18:35 121 1

原创 算法通关村第10关——数组中第k大的数字(白银)

利用二路快排的 partition 方法找到中间元素下标,然后与 target 比较,相等则直接返回该下标对应的元素值,若大于 target 则砍掉右边部分,若小于 target 则砍掉左边部分。假设数组长度为len,第k个最大元素,即从小到大排序后,下标为len-k(target)的元素值。用快速排序的二路快排,即对撞型双指针。请注意,你需要找的是数组排序后的第。你必须设计并实现时间复杂度为。个最大的元素,而不是第。

2023-09-09 20:45:01 119 1

原创 算法通关村第10关——快速排序并不难(青铜)

然后遍历数组使 小于pivot的在左边,大于pivot的在右边,然后递归再对左边和右边进行上述排序,直到只有一个元素时,递归结束。,请你将该数组升序排列。

2023-09-07 17:37:57 128 1

原创 算法通关村第9关——验证二叉搜索树问题(白银)

得到的值构成的序列一定升序,且不包含重复元素。那么在进行中序遍历时可以实时检测当前节点的值是否大于前一个中序遍历得到的节点的值即可。,判断其是否是一个有效的二叉搜索树。对于上述二叉搜索树的定义而言,使用。给你一个二叉树的根节点。

2023-09-06 19:27:07 97 1

原创 算法通关村第9关——彻底理解的二分查找(青铜)

但是如果left和right过大可能会导致相加后溢出,所以我们改为。,但是除法在计算机上运行较慢,所以我们可以用。对于mid的求解,初学者会写为。

2023-09-02 17:11:02 47 1

原创 算法通关村第8关——二叉树的最小最大深度问题(白银)

此类问题向下递归,分别找 根节点的左右孩子节点到叶子节点的最大深度,那么根节点的最大深度就是 左节点最大深度和右节点最大深度 相比较的最大深度 加一 就是根节点的最大深度。答:不可以,因为对于最小深度而言,当某节点的左节点为null时返回0,右节点不为null,那么比较最小值其结果为0,显然不对,因为该节点不是叶子节点。显示考虑是否为叶子节点,若是则返回1,且在求某节点的左右子节点时,要先判断其左右节点是否为null,若为null,则返回int最大值。是指从根节点到最远叶子节点的最长路径上的节点数。

2023-09-01 16:54:46 68 1

原创 算法通关村第8关——轻松搞定二叉树的反转(青铜)

题解:对于此类问题,我们的解题思路在于先只考虑。,翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。

2023-08-31 22:12:51 72

原创 算法通关村第七关——迭代实现二叉树的前中后序遍历(黄金)

再看中序遍历,中序遍历是左中右,先访问的是二叉树左子数的节点,然后一层一层向下访问,直到到达数左面的最底部,在开始处理节点(也就是把节点的数值放进res列表中)。再使用迭代法写中序遍历,就需要借助指针的遍历来帮助访问节点,栈则用来处理节点上的元素。利用反转法,左右中 反转后变为 中右左,中右左 参照 前序(中左右)求得,然后再反转得到后序。前序遍历是中左右,如果还有左子树就一直向下找。完了之后再返回从最底层逐步向上向右找。

2023-08-30 20:23:14 71 1

原创 算法通关村第七关——理解二叉树的前中后序遍历(白银)

【代码】算法通关村第七关——理解二叉树的前中后序遍历(白银)

2023-08-30 16:49:21 82 1

原创 算法通关村第六关——二叉树的层次遍历经典问题(白银)

3、最后将第三层的节点依次出队,并保持其孩子节点,但其并不存在孩子节点,就会使队列里没有元素,从遍历结束。2、然后再将第二层的左右节点出队,每出一个节点,就将其孩子节点入队缓存,第二层遍历结束。1、先将根节点入队,然后出队后将其左右孩子节点,依次加入队列,第一层遍历结束;从根节点开始遍历,利用队列进行缓存。

2023-08-28 19:42:51 98 1

原创 算法通关村第六关——如何使用中序和后序来恢复二叉树

后续:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1 (左右中)中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12 (中左右)【8 7 6 5 4 3】 2 即2只有左子树,没有右子树。第一轮:根节点为1,然后划分根节点的左节点和右节点的中序和后序。先考虑左子树:根节点为2,划分。

2023-08-11 17:30:48 52 1

原创 算法通关村—有效的括号问题解析

使用map保存括号,map的key保存左括号,map的value保存右括号,使用 map.containsKey(key)解决优雅的判断字符为左括号,使用map.get(key)解决得到栈顶元素的右括号。遍历字符串,取出单个字符,如果该字符为左括号,则入栈;若为右括号,则与栈顶元素对应的右括号比较是否相等,不相等则匹配失败,相等则继续遍历。如何优雅的判断字符为左括号?如何得到栈顶元素对应的右括号?输入:s = "(){}[]",判断字符串是否有效。

2023-08-08 17:16:14 57

原创 算法通关村——如何基于数组和链表实现栈

后进先出、先进后出push(E):增加一个元素Epop0:弹出元素Epeek0:显示栈顶元素,但是不出栈empty0:判断栈是否为空。

2023-08-03 17:52:08 31

原创 算法通关村第三关——双指针思想以及应用(白银)

【代码】算法通关村第三关——双指针思想以及应用(白银)

2023-07-31 18:15:32 63 1

原创 算法通关村——数组热身青铜挑战笔记

最终,合并后数组不应由函数返回,而是存储在数组。如果数组是单调递增或单调递减的,那么它是。个元素表示应合并的元素,后。中,使合并后的数组同样按。

2023-07-31 17:43:41 89 1

原创 算法通关村第二关——链表指定区间反转问题

把链表分成三部分,使用reverseList(head)进行区间的反转,然后在进行三部分的拼接。只遍历一遍链表,使节点插入到对应的位置,即pre节点后即可。

2023-07-24 18:37:04 71

原创 算法通关村第二关——链表反转青铜挑战笔记

虚拟节点ans.next总是指向要返回的节点,在遍历链表处理每个节点cur时,将每个节点插入在ans的后面,即ans.next=cur,当遍历完后,放回ans.next。定义节点res想当于虚拟头结点辅助反转的ans.next节点。先遍历到尾节点,然后从尾节点逐一翻转。

2023-07-21 20:22:19 136 1

原创 算法通关村第一关——两个链表第一个公共子结点

首先要明确题目,第一个公共结点之后链表都是相同的。由此,我们假设有两个链表a,b并且他们有公共子结点,那么只要在其中一个链表中顺序遍历找到另一个链表中的相同结点,则为第一个公共子结点。此方法的主要思路是利用第一个公共子结点之后的内容与长度一致,因此我们将两个链表的遍历指针调整至相同长度,再此基础上进行遍历,则第一个一致的结点即为我们要找的子结点。先遍历一个链表,将其结点存储在HashSet中,再遍历另一个链表并判断每一个结点是否存在于set中,第一个找到的存在结点即为第一个公共子结点。

2023-07-18 14:20:32 321 1

原创 算法通关村第一关——链表青铜挑战笔记

创建一个值为1 2 3 4 5 的链表。(3)根据指定值删除元素,返回删除的元素值。(1)删除首元素,返回删除的元素值。(2)删除尾元素,返回删除的元素值。(2)在链表中间和结尾插入。(2)在链表中间和结尾删除。(3)某个结点的后部插入。(1)在链表的表头插入。(1)在链表的表头删除。

2023-07-16 22:30:56 540 1

空空如也

空空如也

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

TA关注的人

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