給你一個連結串列的頭節點 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; } };