369. Plus One Linked List
grandyang: http://www.cnblogs.com/grandyang/p/5626389.html
方法1: recursion
思路:递归计算carry,如果为空返回1,这样最后一位会+1。继续计算digit = head -> val + carry,digit % 10 是余数,digit / 10 是向前的进位
class Solution {
public:
ListNode* plusOne(ListNode* head) {
if (!head) return head;
int msp = dfs(head);
if (msp){
ListNode* newHead = new ListNode(1);
newHead -> next = head;
return newHead;
}
return head;
}
int dfs(ListNode* head){
if (!head ) return 1;
int carry = dfs(head -> next);
int digit = head -> val + carry;
head -> val = digit % 10;
return digit / 10;
}
};