其实就是找最后一段都是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;
}
}