题目:
如果链表中包含环,如何找出环的入口节点?
分析一:
代码一:
package offer.xzs.twentythree;
public class Demo01 {
public static void main(String[] args) {
ListNode head = new ListNode(1);
ListNode node1 = new ListNode(2);
ListNode node2 = new ListNode(3);
ListNode node3 = new ListNode(4);
ListNode node4 = new ListNode(5);
ListNode node5 = new ListNode(6);
head.setNext(node1);
node1.setNext(node2);
node2.setNext(node3);
node3.setNext(node4);
node4.setNext(node5);
node5.setNext(node4);
ListNode node = getNode(head);
System.out.println(node.getValue());
}
public static ListNode getNode(ListNode head) {
if (head == null || head.getNext() == null)
return null;
ListNode slow = head, fast = head;
do {
fast = fast.getNext().getNext();
slow = slow.getNext();
} while (slow != fast);
fast = head;
while (slow != fast) {
slow = slow.getNext();
fast = fast.getNext();
}
return slow;
}
}