# 1171. Remove Zero Sum Consecutive Nodes from Linked List ###### tags: `Leetcode` `Medium` `Linked List` `Prefix Sum` Link: https://leetcode.com/problems/remove-zero-sum-consecutive-nodes-from-linked-list/description/ ## 思路 首先思考 如果不是linkedlist 是一个array 我们求prefixSum 然后存在map中 如果出现了重复的prefix 说明中间这段可以被删掉 linked list也是一样的做法 但需要注意的是如果我们把一段node删掉就需要把这一段node所有prefix从map里面删掉 (line 13-19) ## Code ```java= class Solution { public ListNode removeZeroSumSublists(ListNode head) { Map<Integer, ListNode> map = new HashMap<>(); ListNode dummyNode = new ListNode(0, head); map.put(0, dummyNode); ListNode curr = head; int sum = 0; while(curr!=null){ sum += curr.val; ListNode next = curr.next; if(map.containsKey(sum)){ ListNode prev = map.get(sum); ListNode tempcur = prev.next; int p = sum+tempcur.val; while(p!=sum){ map.remove(p); tempcur = tempcur.next; p += tempcur.val; } prev.next = next; } else map.put(sum, curr); curr = next; } return dummyNode.next; } } ```