
刷题题解
wangchengxi03
这个作者很懒,什么都没留下…
展开
-
LeetCode 225. 用队列实现栈
入栈时直接入队到queue1中,出栈时queue1队尾的元素就是栈顶元素,我们需要获得它,直接将queue1队尾之前的元素全部入队到queue2,取得它,再把queue2的元素全部入队到queue1中。leetcode官方题解的两种思路:一种用了两个队列queue1(作为真正的栈),queue2,入栈时元素e入队到queue2中,在把queue1的元素全部入队到queue2中,最后交换queue1、queue2,这样queue1队首的元素就是栈顶的元素,而queue2是空队。原创 2022-10-26 13:55:45 · 86 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制
直接在原链表上复制每一个节点在原节点的后面(复制操作),1->2->3复制后为1->1->2->2->3->3。再让新的复制节点的random的指针域指向原节点指针的下一个节点,最后把新链表从原链表拆分出来。用两个Node型的动态数组ArrayList,一个为temp,另一个为res,temp存放原链表的每一个节点,res存放复制过来的每一个节点(节点中next指针域和random指针域都没有赋值),然后遍历res,给res中每一个节点的next指针域和random指针域赋值。可以用哈希+递归实现。原创 2022-10-23 13:53:30 · 148 阅读 · 0 评论 -
226.翻转二叉树
【代码】226.翻转二叉树。原创 2022-09-16 19:57:49 · 134 阅读 · 0 评论 -
二叉树的层次遍历(迭代法、递归实现)及leetcode相关刷题
因为需要存放树节点的值和根据一个值来判断是否开始遍历下一层的元素,所以递归函数的参数列表中应该有一个树节点和一个int的值,函数不需要返回数据,只需在递归函数对数据进行处理时,将结果加入到res中,所以返回类型是void。当树节点的值为null时,就终止递归,最后是函数的处理逻辑,在递归函数中实现。队列的特点是元素先进先出,符合一层一层的打印二叉树元素的逻辑,只需用一个变量记录每一层有多少个节点,结合广度优先遍历二叉树就可以实现。原创 2022-09-15 20:46:23 · 252 阅读 · 0 评论 -
二叉树的三种遍历实现(迭代法)
为什么右子节点比左子节点先入栈,因为这样右子节点就比左子节点后出栈,节点出栈的顺序就是中左右了,正好和二叉树的前序遍历顺序一样。前序遍历的顺序是中左右,我们可以创建一个栈,利用栈的特性帮助我们前序遍历二叉树,先将二叉树的根节点入栈,再将根节点出栈,加入到结果集中,再将根节点的右子节点先入栈,左子节点再入栈,后序遍历的顺序是左右中,我们只需稍稍改变前序遍历的迭代法实现,得到遍历顺序为中右左的结果集,再将结果集翻转就可以得到后序遍历为左右中的结果集了。当要处理的节点放入栈中,可以再放入一个空节点做标记来实现。原创 2022-09-14 20:58:42 · 574 阅读 · 0 评论 -
用递归法实现二叉树的三种遍历
而二叉树的中序、后序遍历只需改变下单层递归处理逻辑就行了。原创 2022-09-12 11:15:25 · 200 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树(Java迭代法实现)
找下规律, 发现队列可以实现层次遍历, 比如根节点3先入队,再将队列的第一个节点出队,并将出队的左右子节点(不为空)入队,直到队列为空。给定二叉树: [3,9,20,null,null,15,7]原创 2022-09-12 09:37:52 · 247 阅读 · 0 评论 -
剑指 Offer 19. 正则表达式匹配(Java动态规划)
【代码】剑指 Offer 19. 正则表达式匹配(Java动态规划)原创 2022-09-11 17:42:12 · 151 阅读 · 0 评论