week 8

用户头像
Geek_2e7dd7
关注
发布于: 9 小时前

双指针,指向list1的走到末尾且到list2走到null为止,指向list2的走到末尾切到list1走到null位置。

两个指针最后同时变为null则无交叉节点,如果途中出现两个指针指向同一个节点,则该节点是交叉节点。

Node findJoinNode(Node n1, Node n2) {
Node p1 = n1;
Node p2 = n2;
boolean flipped1 = false;
boolean flipped2 = false;
while (p1 != null && p2 != null) {
if (p1 == p2) {
return p1;
}
if (p1.next == null) {
if (flipped1) {
break;
}
flipped1 = true;
p1 = n2;
} else {
p1 = p1.next;
}

if (p2.next == null) {
if (flipped2) {
break;
}
flipped2 = true;
p2 = n1;
} else {
p2 = p2.next;
}
}

return null;
}





用户头像

Geek_2e7dd7

关注

还未添加个人签名 2018.11.08 加入

还未添加个人简介

评论

发布
暂无评论
week 8