Skip to content

Latest commit

 

History

History
67 lines (55 loc) · 1.47 KB

1171. 从链表中删去总和值为零的连续节点.md

File metadata and controls

67 lines (55 loc) · 1.47 KB

1171. 从链表中删去总和值为零的连续节点

给你一个链表的头节点 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
};