369. Plus One Linked List

其实就是找最后一段都是9的NODE,比如:
723 99 23 9999 4 9999 1 9 8

需要定位到最后一个全是9的数段的开头,就是那个1,然后看最后一个值是不是9,是的话定位的val+1,然后定位后面都是0:
723 99 23 9999 4 9999 1 9 9
变成
723 99 23 9999 4 9999 2 0 0
最后一个值不是9,最后一个值+1就行了:
723 99 23 9999 4 9999 1 9 8
变成
723 99 23 9999 4 9999 1 9 9

剩下的就是要解决EDGE CASE,比如都是9之类的情况。。借助一个DUMMY NODE会方便很多。

public class Solution {
    public ListNode plusOne(ListNode head) 
    {
        if(head == null) return head;
        
        ListNode tempHead = new ListNode(0);
        tempHead.next = head;
        ListNode temp = tempHead;
        
        while(temp.next != null)
        {
            if(temp.val !=9 && temp.next.val == 9)
            {
                tempHead = temp;
            }
            temp=temp.next;
        }
        
        if(temp.val == 9)
        {
            tempHead.val++;
            temp = tempHead.next;
            while(temp!=null)
            {
                temp.val = 0;
                temp=temp.next;
            }
            if(tempHead.next == head) return tempHead;
        }
        else
        {
            temp.val++;
            
        }
        
        return head;
        
       
        
    }
}
原文地址:https://www.cnblogs.com/reboot329/p/5935756.html