zoukankan      html  css  js  c++  java
  • 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;
            
           
            
        }
    }
    
  • 相关阅读:
    列表、元组、字典练习
    周总结04
    站立会议07
    人月神话阅读笔记01
    站立会议06
    站立会议05
    站立会议04
    典型用户需求分析第一期
    站立会议03
    站立会议02
  • 原文地址:https://www.cnblogs.com/reboot329/p/5935756.html
Copyright © 2011-2022 走看看