给你一个链表的头节点 head
,该链表包含由 0
分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0
。
对于每两个相邻的 0
,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0
移除,修改后的链表不应该含有任何 0
。
返回修改后链表的头节点 head
。
/** * 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* node = head->next; ListNode* newhead = head; while (node->next != nullptr) { if (node->val) { newhead->val += node->val; } else { newhead = newhead->next; newhead->val = 0; } node = node->next; } newhead->next = nullptr; return head; } };
标签:node,ListNode,val,合并,next,2181,newhead,节点 From: https://www.cnblogs.com/mysteryily/p/18405610