JavaScript求链表的环大小

来源:互联网 发布:蒋勤勤的长相知乎 编辑:程序博客网 时间:2024/06/06 01:44

给定一个节点,它是一条链表的开始。

这个链表始终包含尾部和一个环,请求出这个环包含节点的数目。

如下面的图片所示:

思路:
遍历链表并且用一个标记来跟踪节点,如果遇到已标记的节点,则说明这是链表的环与尾部的交界处。
那么再次从尾节点遍历到该标记节点,得到尾部的大小。

用总大小减去尾部大小,得到环大小。

function Node(next) {this.next = next;}function loop_size(node) {var total = 0;var loopEntrance = null;var nonLoopSize = 0;var hasVisited = [];for (var cur = node; cur; cur = cur.next) {if (cur.hasVisited) {loopEntrance = cur;break;} else {hasVisited.push(cur);cur.hasVisited = true;total++;}}for (cur = node; cur !== loopEntrance; cur = cur.next) {nonLoopSize++;}//clear signalsfor (var i = 0; i < hasVisited.length; i++) {hasVisited[i]["hasVisited"] = false;}return total - nonLoopSize;}


0 0
原创粉丝点击