链表一般情况下有一短一长,遍历完短了后,发现长了还没有遍历完,如果让两个链表互相链接以此,再遍历,就可以看到弥补长度的区别了,下面有流程图,可以方便理解
const getIntersectionNode = (a, b) => {
let x = a,
y = b;
while (x !== y) {
if (x === null) {
x = b;
} else {
x = x.next;
}
if (y === null) {
y = a;
} else {
y = y.next;
}
}
return x;
};
调试代码
var obj = {
val: 8,
next: {
val: 4,
next: {
val: 5,
next: null,
},
},
};
var A = {
val: 4,
next: {
val: 1,
next: obj,
},
};
var B = {
val: 5,
next: {
val: 0,
next: {
val: 1,
next: obj,
},
},
};
断点
流程分析