Welcome to Subscribe On Youtube
369. Plus One Linked List
Description
Given a non-negative integer represented as a linked list of digits, plus one to the integer.
The digits are stored such that the most significant digit is at the head
of the list.
Example 1:
Input: head = [1,2,3] Output: [1,2,4]
Example 2:
Input: head = [0] Output: [1]
Constraints:
- The number of nodes in the linked list is in the range
[1, 100]
. 0 <= Node.val <= 9
- The number represented by the linked list does not contain leading zeros except for the zero itself.
Solutions
-
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode plusOne(ListNode head) { ListNode dummy = new ListNode(0, head); ListNode target = dummy; while (head != null) { if (head.val != 9) { target = head; } head = head.next; } ++target.val; target = target.next; while (target != null) { target.val = 0; target = target.next; } return dummy.val == 1 ? dummy : dummy.next; } }
-
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* plusOne(ListNode* head) { ListNode* dummy = new ListNode(0, head); ListNode* target = dummy; while (head) { if (head->val != 9) target = head; head = head->next; } ++target->val; target = target->next; while (target) { target->val = 0; target = target->next; } return dummy->val == 1 ? dummy : dummy->next; } };
-
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def plusOne(self, head: ListNode) -> ListNode: dummy = ListNode(0, head) target = dummy while head: if head.val != 9: target = head head = head.next target.val += 1 target = target.next while target: target.val = 0 target = target.next return dummy if dummy.val else dummy.next
-
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func plusOne(head *ListNode) *ListNode { dummy := &ListNode{0, head} target := dummy for head != nil { if head.Val != 9 { target = head } head = head.Next } target.Val++ target = target.Next for target != nil { target.Val = 0 target = target.Next } if dummy.Val == 1 { return dummy } return dummy.Next }