首页 > 代码库 > 369. Plus One Linked List
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->3Output: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; }}
369. Plus One Linked List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。