Plus One Linked List -- LeetCode
Given a non-negative number represented as a singly linked list of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
Example:
Input:
1->2->3
Output:
1->2->4
思路:递归。
1 /**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9 class Solution {
10 public:
11 int help(ListNode* head) {
12 if (head->next == NULL) head->val++;
13 else head->val += help(head->next);
14 if (head->val < 10) return 0;
15 head->val = 0;
16 return 1;
17 }
18 ListNode* plusOne(ListNode* head) {
19 int credit = help(head);
20 if (!credit) return head;
21 ListNode *res = new ListNode(1);
22 res->next = head;
23 return res;
24 }
25 };