
剑桥offer
宠宠熊
网络工程小萌新
展开
-
合并K个有序的链表
解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。输入:lists = [[1,4,5],[1,3,4],[2,6]]请将所有链表合并到一个升序链表中,返回合并后的链表。给定一个链表数组,每个链表都已经按升序排列。输出:[1,1,2,3,4,4,5,6]两两进行合并(二路归并法合并两个链表)输入:lists = []输出:[]原创 2023-07-30 22:55:10 · 169 阅读 · 0 评论 -
剑桥offer:重建二叉树——输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出的二叉树并输出它的头节点。2.在中序遍历中找到根节点的位置 k,则 k左边是左子树的中序遍历,右边是右子树的中序遍历;3.假设左子树的中序遍历的长度是 len,则在前序遍历中,根节点后面的 len个数,是左子树的前序遍历,剩下的数是右子树的前序遍历;4.有了左右子树的前序遍历和中序遍历,我们可以先递归创建出左右子树,然后再创建根节点;原创 2023-07-26 23:34:46 · 81 阅读 · 0 评论 -
剑桥offer:两个链表的第一个公共结点
1. 用两个指针 p,q 分别指向两个链表 headA,headB 的头结点,同时向后遍历。保证两个链表不完全相同,即两链表的头结点不相同。若没有公共结点,且都走到对方链表的尾部(即p=q=nullptr)2. 当指针到达链表末尾时,重新定位到另一个链表的头结点。2.都从头开始走,让较长的链表先走两个链表长度之差的步数。3.然后两链表一起走,相遇的结点即为第一个公共结点。p走的长度为a+c+b = q走的长度是b+c+a。p走的长度为a+b = q走的长度是b+a。输入两个链表,找出它们的第一个公共结点。原创 2023-07-26 23:29:17 · 187 阅读 · 0 评论 -
剑桥offer:复杂链表的复刻
在复杂链表中,每个结点除了有一个指针指向下一个结点外,还有一个额外的指针指向链表中的任意结点或者null。3.将插入的所有复制结点从原链表中拆分出来形成一个新链表,并将原链表进行还原。1.将每个结点n的后面插入一个复制了val和next的结点n'2.将每个结点n的random指针复制给每个n‘结点。函数结束后原链表要与输入时保持一致。请实现一个函数可以复制一个复杂链表。链表长度 [0,500]。原创 2023-07-22 20:57:26 · 70 阅读 · 0 评论 -
剑桥offer:合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。输入:1->3->5 , 2->4->5。输出:1->2->3->4->5->5。新建一个链表,将l1和l2归并在新链表中。链表长度 [0,500]。原创 2023-07-22 20:55:02 · 67 阅读 · 0 评论 -
剑桥offer:链表中倒数第k个节点
2.链表的倒数第 k个节点,相当于正数第 n−k+1个节点。所以第二次遍历到第 n−k+1个节点,就是我们要找的答案。注意当 k>n时要返回nullptr。(链表) O(n) 由于单链表不能索引到前驱节点,所以只能从前往后遍历。如果 k 大于链表长度,则返回 NULL;输入:链表:1->2->3->4->5 ,k=2。输入一个链表,输出该链表中倒数第 k 个结点。1.第一次遍历得到链表总长度 len;链表长度 [0,30]。原创 2023-07-22 20:42:58 · 60 阅读 · 0 评论