leetcode

我的 leetcode 题解(JavaScript)


对前缀和的应用还是要多熟悉下

var removeZeroSumSublists = function (head) {
  const m = new Map();
  const r = new ListNode(0);
  r.next = head;
  let prefix = 0, ptr = r;
  while (ptr) {
    prefix += ptr.val;
    if (m.has(prefix)) {
      ptr = m.get(prefix).next;
      let tp = prefix + ptr.val;
      while (tp != prefix) {
        m.delete(tp);
        ptr = ptr.next;
        tp += ptr.val;
      }
      m.get(prefix).next = ptr.next;
    } else {
      m.set(prefix, ptr);
    }
    ptr = ptr.next;
  }
  return r.next;
};