1. 程式人生 > 其它 >力扣 369. 給單鏈表加一

力扣 369. 給單鏈表加一

技術標籤:力扣刷題

用一個 非空 單鏈表來表示一個非負整數,然後將這個整數加一。

你可以假設這個整數除了 0 本身,沒有任何前導的 0。

這個整數的各個數位按照 高位在連結串列頭部、低位在連結串列尾部 的順序排列。

示例:

輸入: [1,2,3]
輸出: [1,2,4]

反轉再反轉

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution { public: ListNode* plusOne(ListNode* head) { if(!head){ return NULL; } auto q=reserve(head); auto p=q; int num=1; while(p){ int x=p->val; p->val=(p->val+num)%10; if((x+num)/10==
0) break; if(p->next==NULL&&num){ p->next=new ListNode (1); break; } p=p->next; } return reserve(q); } ListNode* reserve(ListNode* head){ if(!head){ return head;
} ListNode* pre=head; ListNode* cur=NULL; while(pre){ ListNode* temp=pre->next; pre->next=cur; cur=pre; pre=temp; } return cur; } };