2181. Merge Nodes in Between Zeros
給一個linked list
該linked list的頭尾node.Val都是0
並且裡面有多組被0分開的數組
把兩個連續的0之間的node值相加變成單一個node
接著把這些node連接成一個不包含0的linked list
並回傳經過上述操作後的linked list
思路:
用prev紀錄上一個0的下一個node
並用sum紀錄兩個0之間所有node.val的總和
當遇到0之後
把prev.val=sum
並且將prev.next指向第二個0下一個node
經過上述操作後就可以得到答案了
C code :
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeNodes(struct ListNode* head) {
head=head->next;
struct ListNode* prev=head,*tmp=prev;
int sum=0;
while(tmp!=NULL){
while(tmp->val!=0){
sum+=tmp->val;
tmp=tmp->next;
}
prev->val=sum;
sum=0;
tmp=tmp->next;
prev->next=tmp;
prev=prev->next;
}
return head;
}