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]
time: O(n), space: O(1)
/** * 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(head == null) { return head; } ListNode newHead = reverse(head); ListNode cur = newHead; while(cur.next != null) { if(cur.val < 9) { cur.val += 1; return reverse(newHead); } cur.val = 0; cur = cur.next; } if(cur.val < 9) { cur.val += 1; return reverse(newHead); } cur.val = 0; cur.next = new ListNode(1); return reverse(newHead); } public ListNode reverse(ListNode head) { ListNode prev = null, cur = head; while(cur != null) { ListNode next = cur.next; cur.next = prev; prev = cur; cur = next; } return prev; } }