如果没有环,那就说每个节点只访问一遍,如果有环,之前走过的节点会被再访问,那标记下走过的节点就行。 我这里是走过的节点,会标记下next变成undefined。 这样可以不增加空间,因为默认走到头是null,设成undefined可以保证是和之前的不冲突。实际上设置成其他保证唯一的值也可以。

function hasCycle( head ) {
    // write code here
    let p = head;
    while (p !== null) {
        let temp = p;
        p = p.next;
        if (p === undefined) {
            return true;
        }
        temp.next = undefined;
    }
    return false;
}
module.exports = {
    hasCycle : hasCycle
};