Medium

Double a Number Represented as a Linked ListC++

Full explanation · Time O(n) · Space O(1)

// Time:  O(n)
// Space: O(1)

// linked list
class Solution {
public:
    ListNode* doubleIt(ListNode* head) {
        if (head->val >= 5) {
            head = new ListNode(0, head);
        }
        for (auto curr = head; curr; curr = curr->next) {
            curr->val = (curr->val * 2) % 10;
            if (curr->next && curr->next->val >= 5) {
                ++curr->val;
            }
        }
        return head;
    }
};