2181. 合并零之间的节点
题目描述:
给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。
对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0 。
返回修改后链表的头节点 head 。
示例:
代码展示及说明:
class Solution {
public ListNode mergeNodes(ListNode head) {
ListNode slow=head,fast=slow.next; //定义两个指针,这里叫它一个慢指针和一个快指针
int sum=0; //0之间的节点值的和
while(fast!=null){ //当fast不为空
if(sum==0){slow=slow.next;} //开始时sum是为0,slow指向第一个节点
if(fast.val==0){ //此时fast指向的是第一个节点。
slow.val=sum; //将和赋值
sum=0; //重置sum;
}
else{sum+=fast.val;}//不为0的节点的值的和
fast=fast.next; //fast指针下移
}
slow.next=null;
return head.next;
}
}