链表
写吧HJ
向着数据研发工程师不断努力
展开
-
链表中环的入口节点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解题思路思考一个更简单的问题查找链表中是否有环的方法如果链表长度等于1或2直接返回否设置两个节点,分别为p1=root.next、p2root.next.next循环==》 每次使p1前进一步,p2前进两步若发现p1与p2相等,则返回true若发现p1或p2为空,则返回fals...原创 2018-11-29 12:27:06 · 194 阅读 · 1 评论 -
找到链表中的第一个公共节点
题目描述输入两个链表,找出它们的第一个公共结点。解题思路在只包含next节点的前提下,如果两个链表有公共节点,那么这两个链表在公共节点之后的所有节点一定是重合的。即他们一定是“Y”字形,而不可能是“X”字形。所以这两个链表的区别就在于公共节点之前,如果两个链表的在公共节点之前的长度相等,且不重合,那么两个头指针同步前进直到两指针相等即可找到第一个公共节点。但是,公共节点之前,如果两个链表...原创 2019-04-23 15:01:16 · 460 阅读 · 0 评论 -
删除链表中重复的节点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。解题思路设置两个根节点p1和p2,p1负责更改原链表,p2负责检测并跳过重复的节点。当发现p2与p2的下一个节点值相等时,将p2后移直到p2指向的节点为非重复节点...原创 2019-04-23 15:03:37 · 99 阅读 · 0 评论 -
反转链表
public static ListNode reverse(ListNode head){ if (head==null || head.next==null) return head; ListNode last=null; ListNode tmp; while(head!=null){ tmp=head.next; head...原创 2019-04-23 15:05:12 · 86 阅读 · 0 评论 -
链表中倒数第k个节点
题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路建立两个指针,一个领先另一个k步,同时前进,前面的指针到头,后面的那个是倒数第k个代码public ListNode FindKthToTail(ListNode head,int k) { if(head==null || k==0) return null; int len=0; ListNode ...原创 2019-04-23 15:06:37 · 85 阅读 · 0 评论 -
复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路剑指offer中面试题26代码public class CloneRandomList { public RandomListNode Clone...原创 2019-04-24 09:30:18 · 116 阅读 · 0 评论