2181. 合併零之間的節點

mysteryily發表於2024-09-09

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

相關文章