剑指 Offer 52. 两个链表的第一个公共节点

73 阅读1分钟

剑指 Offer 52. 两个链表的第一个公共节点

链表一般情况下有一短一长,遍历完短了后,发现长了还没有遍历完,如果让两个链表互相链接以此,再遍历,就可以看到弥补长度的区别了,下面有流程图,可以方便理解

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,
    },
  },
};

断点

image.png 流程分析 链表找共同部分.jpg