剑指offer
今天开始刷剑指offer,奥力给
小布丁超级帅
读过万卷书,却不知道怎么了解你
展开
-
剑指 Offer 35. 复杂链表的复制
题目入口:复杂链表的复制https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/ 我需要遍历一遍,用map把所有的node的val值存下来(val需要存在一个新的节点),下一次遍历的时候,可在之前创建的新节点上添加next和random. class Solution { public Node copyRandomList(Node head) { Node cur = head; if原创 2022-03-12 08:38:22 · 226 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
题目入口:反转链表https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/遍历链表,我只需要让当前节点的下一个节点指向当前节点,就可以完成链表的反转,不过为了完成链表的遍历,需要实现把原来的下一个节点拷贝下来,要不然链表会无法继续推进. class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null;原创 2022-03-09 20:40:23 · 217 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
题目入口:从尾到头打印链表https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/用一个ArrayList存一下链表正序遍历后的元素,再将ArrayList的元素倒序取出并放到int数组里面. class Solution { public int[] reversePrint(ListNode head) { ArrayList<Integer> list = new Arra原创 2022-03-09 16:51:06 · 264 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
题目入口:包含min函数的栈https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/使用两个栈,stack1为主栈,stack2为辅助栈,stack2是一个单调减的栈,栈顶为当前最小的数,向stack1加入元素的时候,需要判断要加入的元素是否为比stack2中最小的数还小,如果比stack2栈顶数还小的话,加入stack2成为栈顶,stack1弹出元素时,判断弹出的这个元素是否为stack2栈顶,如果是也需要把stack2的栈顶弹出,原创 2022-03-08 14:48:47 · 118 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
题目入口: 用两个栈实现队列https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/ 使用双栈,stack1用于增数据,stack2用于删数据,stack2删数据的时候,首先判断自己是否为空,如果不为空,则栈内有数据,此时stack2中的数据必定会比stack1进来的早,因为这些数据是之前从stack1搬到stack2的,stack2如果没数据,需要把stack1中的数据搬到stack2中,因为栈是先进后出,所以数原创 2022-03-08 14:15:17 · 127 阅读 · 0 评论