Remove Zero Sum Consecutive Nodes from Linked List
MediumHash TableLinked List
Solution
import { ListNode } from '@algorithm/lib';
export function removeZeroSumSublists(head: ListNode | null): ListNode | null {
const newHead = new ListNode(0, head);
let prefix = 0;
let currentNode = head;
const visited = new Map<number, ListNode>([[0, newHead]]);
while (currentNode !== null) {
prefix += currentNode.val;
visited.set(prefix, currentNode);
currentNode = currentNode.next;
}
prefix = 0;
currentNode = newHead;
while (currentNode !== null) {
prefix += currentNode.val;
currentNode.next = visited.get(prefix)!.next;
currentNode = currentNode.next;
}
return newHead.next;
}