给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0 的连续节点组成的序列,直到不存在这样的序列为止。
删除完毕后,请你返回最终结果链表的头节点。
你可以返回任何满足题目要求的答案。
示例 1:
输入:head = [1,2,-3,3,1]
输出:[3,1]
提示:答案 [1,2,1] 也是正确的。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-zero-sum-consecutive-nodes-from-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
因为没删除过才前移,删除过就不用前移,所以搞了个 flag,但是感觉很丑陋
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var removeZeroSumSublists = function(head) {
if (!head) return head
var dum = new ListNode(0, head)
var prev = dum
var flag = false
while (head) {
flag = false
var result = 0
var to = head
while (to) {
result += to.val
if (result === 0) {
flag = true
prev.next = to.next
head = to.next
to = null
} else {
to = to.next
}
}
if (!flag) {
prev = head
head = head.next
}
}
return dum.next
};