摘要: 题目链接 232. 用栈实现队列 思路 设置一个主栈 mainStack 和一个辅助栈 assistantStack,在进行入队的时候,将 mainStack 中的元素全部放入 assistantStack 中,再将 x 入队,然后再将 assistantStack 的元素放入 mainStack 阅读全文
posted @ 2023-01-03 19:33 Frodo1124 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 题目链接 225. 用队列实现栈 思路 设置一个主队列 mainQueue 和一个辅助队列 assistantQueue,在进行压栈的时候,将 mainQueue 中的元素全部放入 assistantQueue 中,再将 x 压栈,然后再将 assistantQueue 的元素放入 mainQueu 阅读全文
posted @ 2023-01-03 19:24 Frodo1124 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 题目链接 328. 奇偶链表 思路 根据题意,我们只需要将扫描到的索引为奇数的结点不断插入到正确位置。 比如 1->2->3->4->5 ==》 1->3->2->4->5 ==》 1->3->5->2->4 在扫描过程中需要维护四个变量: lastOdd 表示已经到正确位置的最后一个奇数,在上方例 阅读全文
posted @ 2023-01-03 19:01 Frodo1124 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 题目链接 92. 反转链表 II 思路 和【链表】LeetCode 206. 反转链表的思路一样,只不过需要调整一下realHead头结点的位置,同时原题中的null在本题中为rightNode的下一个结点。 注意: 如果left == 1则说明head结点也需要被反转,此时反转后的首结点为righ 阅读全文
posted @ 2023-01-03 16:17 Frodo1124 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 题目链接 142. 环形链表 II 思路 代码 class Solution { public ListNode detectCycle(ListNode head) { if(head == null){ return null; } ListNode slow = head; ListNode 阅读全文
posted @ 2023-01-03 11:43 Frodo1124 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 题目链接 141. 环形链表 思路 设置fast指针和slow指针,分别走两步和一步,如果链表有环的话,那么两个指针一定会在某一时刻相遇。 可以想象成速度不同的两个人跑圈,只要时间足够,速度慢的人一定会被速度快的人套圈。 代码 class Solution { public boolean hasC 阅读全文
posted @ 2023-01-03 10:05 Frodo1124 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 题目链接 160. 相交链表 思路1 先测量两个链表的长度,记录差值k=abs(n1 - n2),然后让短的链表先走k步,这样就能保证剩下的长度是一样的,再同步遍历即可。 代码1 class Solution { public: ListNode *getIntersectionNode(ListN 阅读全文
posted @ 2023-01-03 09:51 Frodo1124 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 题目链接 876.链表的中间结点 思路 定义两个指针fast和slow,快的指针一次走两步,慢的指针一次走一步,这样当快的指针走到底的时候,慢指针正好在中间。 以下两幅图说明了偶数结点下,不同循环条件对慢指针结束位置的影响。 代码 class Solution { public ListNode m 阅读全文
posted @ 2023-01-03 09:14 Frodo1124 阅读(27) 评论(0) 推荐(0) 编辑