LeetCode 1171. 从链表中删去总和值为零的连续节点(哈希表)

1. 题目

给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0连续节点组成的序列,直到不存在这样的序列为止。

删除完毕后,请你返回最终结果链表的头节点。

你可以返回任何满足题目要求的答案。

(注意,下面示例中的所有序列,都是对 ListNode 对象序列化的表示。)示例 1:
输入:head = [1,2,-3,3,1]
输出:[3,1]
提示:答案 [1,2,1] 也是正确的。示例 2:
输入:head = [1,2,3,-3,4]
输出:[1,2,4]示例 3:
输入:head = [1,2,3,-3,-2]
输出:[1]提示:
给你的链表中可能有 11000 个节点。
对于链表中的每个节点,节点的值:-1000 <= node.val <= 1000.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-zero-sum-consecutive-nodes-from-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 哈希表

  • 建立包含当前节点的前缀和sum为Key,当前节点指针为Value的哈希表
  • 当sum在哈希表中存在时,两个sum之间的链表可以删除
  • 先将中间的要删除段的哈希表清除,再断开链表
  • 循环执行以上步骤

在这里插入图片描述

class Solution {
public:ListNode* removeZeroSumSublists(ListNode* head) {if(head == NULL)return NULL;ListNode *newHead = new ListNode(0);//为方便处理添加哨兵,值为0newHead->next = head;ListNode *prev = newHead, *cur = head, *temp;unordered_map<int,ListNode*> m;m[0] = prev;//哨兵添加进哈希表int sum = 0, s;unordered_map<int,ListNode*>::iterator it;while(cur != NULL){sum += cur->val;it = m.find(sum);if(it == m.end())m[sum] = cur;else//找到了一样的值{temp = it->second->next;s = it->first + temp->val;while(s != sum)//清空待删除段的哈希表{m.erase(s);temp = temp->next;s += temp->val;}it->second->next = cur->next;//断开中间的sum为0链表段sum = it->first;//sum重置为删除段前面的}cur = cur->next;}ListNode *ans = newHead->next;delete newHead;//释放哨兵return ans;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动端性能监控方案Hertz

性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等。而导致App性能低下的原因有很多&#xff0c;除去设备硬件和软件的外部因素&#xff0c;其中大部分是开发者错误地使用线程、锁、系统函数、…

刷新SOTA!Salesforce提出跨模态对比学习新方法,仅需4M图像数据!

文 | 子龙多模态已经不是一个新鲜的话题&#xff0c;如何在一个模型中融合CV和NLP的信息同时吸引了两个领域的目光&#xff08;CV、NLP的会都能投&#xff09;&#xff0c;但是很容易就能想到&#xff0c;来自图片的视觉特征和来自语料的文本特征来自不同的模型&#xff0c;所隐…

论文浅尝 - ACL2021 | 探讨跨句事件联合抽取问题

转载公众号 | 浙大KG论文题目&#xff1a;MLBiNet: A Cross-Sentence Collective Event Detection Network本文作者&#xff1a;娄东方、廖智霖、邓淑敏、张宁豫、陈华钧&#xff08;浙江大学&#xff09;接收会议&#xff1a;ACL 2021论文链接&#xff1a;https://arxiv.org/p…

LeetCode 343. 整数拆分(DP)

1. 题目 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。示例 2: 输入: 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 说明: 你可以假设 …

python-dotenv解析env文件

python-dotenv解析env文件 最简单和最常见的用法是在应用程序启动时调用load_dotenv&#xff0c;从当前目录或其父目录中的.env文件或指定的路径加载环境变量&#xff0c;然后调用os.getenv提供的与环境相关的方法 .env 文件内容写法 ADMIN_HOST https://uat-rm-gwaaa.cn A…

HDFS NameNode内存详解

前言 《HDFS NameNode内存全景》中&#xff0c;我们从NameNode内部数据结构的视角&#xff0c;对它的内存全景及几个关键数据结构进行了简单解读&#xff0c;并结合实际场景介绍了NameNode可能遇到的问题&#xff0c;还有业界进行横向扩展方面的多种可借鉴解决方案。 事实上&am…

组队瓜分百万奖金池,资深算法工程师带你挑战飞桨论文复现赛!

你是否正在焦虑找不到好的论文&#xff1f;好不容易找到了paper&#xff0c;无法复现出code&#xff1f;缺少科研同行交流&#xff0c;只能独自一人闭门造车&#xff1f;是的&#xff0c;论文复现是要想最快的学习和了解AI领域的方式&#xff0c;复现困境也被叫做“徘徊在 AI 上…

开源开放 | Beyond 预训练语言模型,NLP还需要什么样的知识?

近年来&#xff0c;深度学习技术已广泛应用于NLP领域&#xff0c;但实际应用效果往往受限于缺乏大规模高质量监督样本。2018年底&#xff0c;预训练语言模型横空出世&#xff0c;极大缓解了这个问题&#xff0c;通过“超大规模无监督语料上的预训练语言模型相对少量的监督样本进…

Docker把容器打包成镜像并提交到harbor仓库

Docker把容器打包成镜像并提交到harbor仓库 如果你想要保存当前容器的状态&#xff0c;就可以通过commit来提交获得一个镜像&#xff0c;就好我们虚拟机的时候创建快照&#xff0c;想要回滚到某一个版本 一、首先创建要给tomcat 的本地容器&#xff0c;镜像指定tomcat-alpine:8…

LeetCode 139. 单词拆分(DP)

1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1&#xff1a; 输入: s "…

外卖排序系统特征生产框架

背景 图1 外卖排序系统框架 外卖的排序策略是由机器学习模型驱动的&#xff0c;模型迭代效率制约着策略优化效果。如上图所示&#xff0c;在排序系统里&#xff0c;特征是最为基础的部分&#xff1a;有了特征之后&#xff0c;我们离线训练出模型&#xff0c;然后将特征和模型一…

征稿 | “健康知识图谱”投稿通道开启

Data Intelligence正在与语义网国际知名学者Deborah McGuinness以及Oshani Seneviratne等专家一道组织“个人健康知识图谱”专辑。欢迎投稿&#xff01;DI专辑Special Issue on Personal Health Knowledge Graphs This special issue at Data Intelligence Journal seeks origi…

清华提出LogME,无需微调就能衡量预训练模型的下游任务表现!

文 | 游凯超源 | THUML引言在深度学习时代&#xff0c;神经网络的参数量越来越大&#xff0c;从头开始训练(train from scratch)的成本也越来越大。幸运的是&#xff0c;在计算机视觉、自然语言处理等人工智能应用的主要领域&#xff0c;人们能够采用迁移学习的预训练-微调范式…

好的代码标准

需求分析文档需要用精确的数字来描述&#xff0c;避免量变导致质变

LeetCode 140. 单词拆分 II(DP+回溯)

1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict&#xff0c;在字符串中增加空格来构建一个句子&#xff0c;使得句子中所有的单词都在词典中。返回所有这些可能的句子。 说明&#xff1a; 分隔时可以重复使用字典中的单词。 你可以假设字典中没有重复的…

论文浅尝|简单高效的知识图谱表示学习负样本采样方法

笔记整理 | 陈名杨&#xff0c;浙江大学在读博士生&#xff0c;主要研究方向为知识图谱表示学习Introduction研究知识图谱表示学习&#xff08;KnowledgeGraph Embedding&#xff09;可以解决当前很多应用的基本问题&#xff0c;这些方法旨在将知识图谱中的实体&#xff08;Ent…

常见性能优化策略的总结

本文要感谢我职级评定过程中的一位评委&#xff0c;他建议把之前所做的各种性能优化的案例和方案加以提炼、总结&#xff0c;以文档的形式沉淀下来&#xff0c;并在内部进行分享。力求达到如下效果&#xff1a; 1. 形成可实践、可借鉴、可参考的各种性能优化的方案以及选型考虑…

微软中山大学开源超强的视觉位置编码,涨点显著

文 | 小马源 | 极市平台1.写在前面由于Transformer对于序列数据进行并行操作&#xff0c;所以序列的位置信息就被忽略了。因此&#xff0c;相对位置编码(Relative position encoding, RPE)是Transformer获取输入序列位置信息的重要方法&#xff0c;RPE在自然语言处理任务中已被…

LeetCode 63. 不同路径 II(DP)

1. 题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为“Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为“Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…