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

Posted 欣姐姐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode——1171. 从链表中删去总和值为零的连续节点相关的知识,希望对你有一定的参考价值。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def removeZeroSumSublists(self, head: ListNode) -> ListNode:
        r=[]
        while head:
            r.append(head.val)
            head=head.next
        #print(r)
        i=0
        while i<len(r):
            sum=r[i]
            j=i+1
            while j<len(r) and sum!=0:
                sum+=r[j]
                j+=1
            #print(i,j,sum)
            if sum==0:
                r=r[:i]+r[j:]
            else:
                i+=1
        head=ListNode(0)
        p=head
        for i in range(len(r)):
            p.next=ListNode(r[i])
            p=p.next
        return head.next
                
执行用时 :180 ms, 在所有 python3 提交中击败了32.63%的用户
内存消耗 :13.9 MB, 在所有 python3 提交中击败了100.00%的用户
 
执行用时为 48 ms 的范例
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def removeZeroSumSublists(self, head: ListNode) -> ListNode:
        handle = ListNode(0)
        handle.next = cur = head
        prefix = 0
        m = {0:handle}
        while cur:
            prefix += cur.val
            if prefix in m:
                m[prefix].next = cur.next
            else:
                m[prefix] = cur
            cur = cur.next
        return handle.next

这个我还不能看得太懂,不会做。。。。

 

                                                   ——2019.10.24

 

以上是关于leetcode——1171. 从链表中删去总和值为零的连续节点的主要内容,如果未能解决你的问题,请参考以下文章

leetcode链表--18remove-nth-node-from-end-of-list(从链表中删除倒数第k个结点)

从链表中删除节点

从链表中删除一个节点

16 把第 i 个结点从链表中删除

Leetcode删除链表中的重复元素

Leetcode删除链表中的重复元素