力扣每日1题--2181.合并零之间的节点

server/2024/9/23 6:33:07/

问题

下面我会向大家介绍我的思考过程和解题思路

解题思路

首先,我们看问题提供给我们的提示部分。第一点给了我们节点的数目,第二点给了我们val的范围,而我们这道题是要让我们求和的问题,那么我们就应该估算一下我们数据的一个大概的范围为(0,2*10^8);第三条说不存在连续两个val=0的节点,我们就可以在计算时,每遍历到一个val=0的节点时,就相当于把它和它上一个0之间的节点遍历完了,我们直接将其保存下来,继续遍历即可;第四点告诉我们开头和结尾节点的val都=0,这个就相当于告诉我们了一些特殊情况的处理,当遍历到最后一个部分时,我们也可以以val=0为判断依据结束求和。如果没有这个条件,我们判断的条件就需要改为Node.val==0||Node.next==NULL。

然后根据我们对题目和提示的分析我们定义一个p指针用来遍历储存求得的和的链表(在这里我将求得的和也保存在了原链表中),定义一个q指针用来遍历原链表,我们在每次遍历到val=0的节点时将和sum保存下来,并将其重新赋值为0,用来继续下一个部分的求和。

代码实现

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* mergeNodes(ListNode* head) {ListNode* p=head;//遍历求得的和的链表ListNode* q=head->next;//遍历原链表int sum=0;//用来计算每一部分的和while(q!=NULL){if(q->val==0){//这里我做了一个处理,先让p向后遍历了一步再将sum的值保存下来,这样在最后返回结果时需要返回head->next。如果先保存和再让p向后走,到了最后返回head,但会将原链表中p的下一个节点也保存在我们的结果链表中,得不偿失。p=p->next;p->val=sum;sum=0;                }else{sum+=q->val;}q=q->next;}p->next=nullptr;return head->next;}
};

http://www.ppmy.cn/server/114768.html

相关文章

JVM、JRE、JDK之间的关系

1.是什么 在Java编程中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个不同的概念,它们之间有紧密的联系,但各自承担不同的角色和功能。 下面的例子中…

社交媒体的未来:Facebook如何通过AI技术引领潮流

在数字化时代的浪潮中,社交媒体平台不断演变,以适应用户需求和技术发展的变化。作为全球领先的社交媒体平台,Facebook在这一进程中扮演了重要角色。尤其是人工智能(AI)技术的应用,正在深刻地改变Facebook的…

MySQL 锁

在MySQL中,锁机制是用于协调多个并发事务对同一资源的访问,确保数据的一致性和完整性。不同的锁类型和粒度适应不同的应用场景,通过合理运用锁机制,可以最大限度地提升数据库的并发性能和数据一致性。 一、MySQL中的锁分类 MySQ…

逻辑一键导入导出,解决企业多环境数据迁移的难题

在当今复杂多变的商业环境中,系统间的数据迁移、备份与共享成为了确保业务连续性和一致性的关键环节。随着企业规模的不断扩大和业务的日益复杂化,JVS逻辑引擎作为一款集高效、灵活、可扩展性于一身的决策支持系统,还通过其独特的导入导出功能…

自然语言处理系列六十一》分布式深度学习实战》TensorFlow深度学习框架

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十一分布式深度学习实战》TensorFlow深度学习…

OpenCV结构分析与形状描述符(14)拟合直线函数fitLine()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 拟合一条直线到2D或3D点集。 fitLine 函数通过最小化 ∑ i ρ ( r i ) \sum_i \rho(r_i) ∑i​ρ(ri​)来拟合一条直线到2D或3D点集&#xff0c…

【机器学习】梯度提升和随机森林的概念、两者在python中的实例以及梯度提升和随机森林的区别

引言 梯度提升(Gradient Boosting)是一种强大的机器学习技术,它通过迭代地训练决策树来最小化损失函数,以提高模型的预测性能 随机森林(Random Forest)是一种基于树的集成学习算法,它通过组合多…

如何用720VR全景摄影拍摄星空

1. 选择合适的地点和时间 远离光污染:找到一个远离城市灯光污染的地方,如乡村、山顶或专门的天文观测点。 天气条件:选择晴朗的夜晚,没有云层遮挡,空气质量良好。 月相选择:避免满月等亮光的时段&#xf…