Re: [闲聊] 每日leetcode

楼主: Rushia (みけねこ的鼻屎)   2024-03-12 11:00:21
https://leetcode.com/problems/remove-zero-sum-consecutive-nodes-from-linked-list
1171. Remove Zero Sum Consecutive Nodes from Linked List
给你一个链结串行,如果子串行相邻元素和为0可以删除这些节点,求出删到最后的连结串
列长什么样子。
思路:
1.暴力法是透过维护一个list,每次加入元素i时都去检查 sum(0, i-1), sum(0, i-2),
sum(0, i-3), ... 如果和与元素 i 相加则把相关元素从尾端pop掉,最后把list的节
点串在一起。
2.上面有很多重复计算的和,要多次求和可以往前缀和方面想,但要先考虑一下删除中
间的元素会不会对前缀和造成影响,考虑list=[7,10,-4,-6,4,-4] 整理出的前缀和
7 10 -4 -6 4 -4
sum 7 17 13 7 11 7
我们发现当sum重复出现时,中间的节点都可以删除(中间和为0),所以问题变成对每个
节点寻找最右边出现的相同和。
3.储存最右元素的索引(next)可以使用map存,每次都更新成最新的,初始化的时候要放
一个 0:dummy 的keyvalue,可以处理整个list和为0的情况。
pycode

Links booklink

Contact Us: admin [ a t ] ucptt.com