1、Given a linked list, determine if it has a cycle in it. 2、Given a linked list, return the node where the cyc…
分类:链表相关算法
(剑指Offer)面试题27:二叉搜索树与双向链表
题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 二叉树的定义如下: struct TreeNode{ int val; TreeNode* le…
(剑指Offer)面试题26:复杂链表的复制
题目: 请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。 在复杂链表中,每个结点除了有一个pNext指针指向下一个结点之外,还有一个pSiblin…
(剑指Offer)面试题57:删除链表中的重复结点
题目: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2-&…
(LeetCode 160)Intersection of Two Linked Lists
Write a program to find the node at which the intersection of two singly linked lists begins. For example, the…
(剑指Offer)面试题56:链表中环的入口结点
题目: 一个链表中包含环,请找出该链表的环的入口结点。 思路: 1、哈希表 遍历整个链表,并将链表结点存入哈希表中(这里我们使用容器set),如果遍历到某个链表结点已经在set中,那么该点即为环的入口结点; 2、两个指针…
(剑指Offer)面试题13:在O(1)时间内删除链表结点
题目: 在给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间内删除该结点。链表结点与函数的定义如下: struct ListNode{ int val; ListNode* next; }; void del…
(剑指Offer)面试题15:链表中倒数第k个结点
题目: 输入一个链表,输出该链表中倒数第k个结点。 例如:链表中有6个结点,从头到尾依次为1,2,3,4,5,6,则该链表的倒数第3个结点为4. 链表结点定义: struct ListNode{ int val; Lis…
(LeetCode 82)Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from t…
(剑指Offer)面试题5:从尾到头打印链表
题目: 输入一个链表的头结点,从尾到头反过来打印每个结点的值。 链表结点定义: struct ListNode{ int value; ListNode* pNext; }; 思路: 1、改变链表结构的话,先反转链表,然…