Question
Given a non-negative integer represented as non-empty a singly linked list of digits, plus one to the integer.
You may assume the integer do not contain any leading zero, except the number 0 itself.
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]
Solution
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode plusOne(ListNode head) {
if (helper(head) == 0) {
return head;
} else {
ListNode newHead = new ListNode(1);
newHead.next = head;
return newHead;
}
}
private int helper (ListNode head) {
if (head.next == null) {
if (head.val + 1 > 9) {
head.val = 0;
return 1;
} else {
head.val++;
return 0;
}
}
int addOn = helper(head.next);
if (head.val + addOn > 9) {
head.val = 0;
return 1;
} else {
head.val = head.val + addOn;
return 0;
}
}
}
Note:
If we convert the linked list into a string, and then re-assign the value back to the linked list, then we will have TLE.