LeetCode linked-list-cycle-ii

题目描述


Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull.

Follow up:

Can you solve it without using extra space?

解题思路:

建立一个HashSet, 每访问一个节点就判断HashSet中是否已经存在,如果有,则直接返回;如果没有,则返回空

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
import java.util.*;
public class Solution {
    public ListNode detectCycle(ListNode head) {
       Set sets = new HashSet();
		ListNode tmp = head;
		while (tmp != null) {
			if (!sets.contains(tmp)) {
				sets.add(tmp);
				tmp = tmp.next;
			} else {
				break;
			}
		}
		return tmp;
    }
}

你可能感兴趣的:(LeetCode linked-list-cycle-ii)