zoukankan      html  css  js  c++  java
  • 369. Plus One Linked List

    Given a non-negative number represented as a singly linked list of digits, plus one to the number.

    The digits are stored such that the most significant digit is at the head of the list.

    Example:

    Input:
    1->2->3
    
    Output:
    1->2->4

    ListNode* plusOne(ListNode* head) {
            ListNode *l1 = reverse(head);
            ListNode* cur = l1, *nh = NULL;
            int c = 1;
            while (cur != NULL) {
                cur->val += c;
                c = cur->val / 10;
                cur->val %= 10;
                cur = cur->next;
            }
            l1 = reverse(l1);
            
            if (c != 0) {
                nh = new ListNode(c);
                nh->next = l1;
                l1 = nh;
            }
            return l1;
        }
        
        ListNode* reverse(ListNode* head) {
            ListNode* prev = NULL;
            ListNode* cur = head;
            ListNode* nxt = NULL;
            while (cur != NULL) {
                nxt = cur->next;
                cur->next = prev;
                prev = cur;
                cur = nxt;
            }
            return prev;
        }
    public class Solution {
    // two pointer
        public ListNode plusOne(ListNode head) {
            ListNode dummy = new ListNode(0);
            dummy.next = head;
            ListNode i = dummy;
            ListNode j = dummy;
    
            while (j.next != null) {
                j = j.next;
                if (j.val != 9) {
                    i = j;
                }
            }
            // i = index of last non-9 digit
        
            i.val++;
            i = i.next;
            while (i != null) {
                i.val = 0;
                i = i.next;
            }
            
            if (dummy.val == 0) return dummy.next;
            return dummy;
        }
    }
  • 相关阅读:
    Codeforces Round #249 (Div. 2) D. Special Grid 枚举
    图论二
    C语言中的atan和atan2(转)
    BestCoder Round #79 (div.2)
    数学
    LCA
    二分图
    动态规划
    线段树
    树状数组
  • 原文地址:https://www.cnblogs.com/fripside/p/6082003.html
Copyright © 2011-2022 走看看