用链表表示一个常数,如123表示成1->2->3,要求把这个常数加1
递归算法:
public static ListNode plusOne(ListNode head) {
int result = addOne(head);
if(result == 1){
ListNode dummy = new ListNode(1);
dummy.next = head;
return dummy;
}
else return head;
}
public static int addOne(ListNode head){
if(head.next == null){ //最后节点
head.val += 1;
if(head.val > 9){ //有进位
head.val -= 10;
return 1;
}
else return 0; //无进位
}
else{ //前面的节点,递归计算next之后的节点,再与当前节点相加
int result = addOne(head.next);
head.val += result;
if(head.val > 9){
head.val -= 10;
return 1;
}
else return 0;
}
}