这道题也可以使用栈加取模取余的方式来做,方法就是判断栈顶元素加1后是否需要进位,比较麻烦。这里使用递归方式,如果当前节点是最后一个节点,直接加1,然后判断是否到10。

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode plusOne (ListNode head) {
        if(head == null) return head;
        ListNode pHead = new ListNode(-1);
        ListNode node = plus(head);
        pHead.next = node;
        if(node.val==10){
            pHead.val =1;
            pHead.next.val = 0;
            return pHead;
        }
        return pHead.next;
    }
    
    public ListNode plus(ListNode head){
        if(head.next == null){
            head.val+=1;
            return head;
        }
        ListNode node = plus(head.next);
        if(node.val==10){
            head.val +=1;
            head.next.val = 0;
        }
        return head;
    }
}