• [LeetCode] 2



    You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8

    /**
    * Definition for singly-linked list.
    * struct ListNode {
    * int val;
    * ListNode *next;
    * ListNode(int x) : val(x), next(NULL) {}
    * };
    */
    class Solution {
    public:
      ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        if (l1 == NULL) return l2;
        if (l2 == NULL) return l1;

        ListNode *head = new ListNode(0);
        ListNode *sum = head;

        while(l1 || l2) {
          if(l1 == NULL){
            sum->next = l2;
            break;
          }
          if(l2 == NULL){
            sum->next = l1;
            break;
          }
          ListNode* res = new ListNode(l1->val + l2->val + sum->val /10);
          sum->val %= 10;
          sum->next = res;
          sum = res;
          l1 = l1->next;
          l2 = l2->next;
        }
        while(sum->next) {
          sum->next->val += sum->val/10;
          sum->val %= 10;
          sum = sum->next;
        }

        ListNode *p = head;
        head = head->next;
        if (sum->val >= 10) {
          p->val = sum->val /10;
          sum->val %= 10;
          sum->next = p;
          p->next = NULL;
        }
        else {
          delete p;
        }
        return head;
      }
    };

  • 相关阅读:
    循环逗号分割数组!
    只是想好好学习一下!
    html元素水平垂直居中
    闭包知识点--笔记
    20160314
    从零开始做运维-零
    Nginx 和 CodeIgniter
    安装PIL库
    init
    NutUI3 多端实践之路
  • 原文地址:https://www.cnblogs.com/shoemaker/p/4765872.html
Copyright © 2020-2023  润新知