zoukankan      html  css  js  c++  java
  • 21-Add Two Numbers-Leetcode

    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
    思路:从左边对齐,开始相加,将产生的进位置为下一个指针的初始值,这里主要需要考虑到几种情况,两个链表相等或不等两类,
    最重要的是根据进位决定next指针是否为空或者是一个新节点。

    /**
     * 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) {
            ListNode * head = new ListNode(0);
            ListNode * beg = head;
            int pre=0;
            while(l1!=NULL||l2!=NULL){
                if(l1!=NULL&&l2!=NULL){
                    head->val = head->val+l1->val+l2->val;
                    pre = head->val/10;
                    head->val = (head->val)%10;
                    l1 = l1->next;
                    l2 = l2->next;
                    if(l1==NULL&&l2==NULL&&pre==0)head->next = NULL;//这个if很重要
                    else head->next = new ListNode(pre);
                    head = head->next;
                }
                else if(l1!=NULL&&l2==NULL){
                    head->val = head->val+l1->val;
                    pre = head->val/10;
                    head->val = (head->val)%10;
                    l1 = l1->next;
                    if(l1==NULL&&pre==0)head->next = NULL;
                    else head->next = new ListNode(pre);
                    head = head->next;
                }
                else if(l1==NULL&&l2!=NULL)
                {
                    head->val = head->val+l2->val;
                    pre = head->val/10;
                    head->val = (head->val)%10;
                    l2 = l2->next;
                    if(l2==NULL&&pre==0)head->next = NULL;
                    else head->next = new ListNode(pre);
                    head = head->next;
                }
                else{
                    head->val = pre;
                    return beg;
                }
            }
            return beg;
        }
    };
  • 相关阅读:
    CSUFT 1002 Robot Navigation
    CSUFT 1003 All Your Base
    Uva 1599 最佳路径
    Uva 10129 单词
    欧拉回路
    Uva 10305 给任务排序
    uva 816 Abbott的复仇
    Uva 1103 古代象形文字
    Uva 10118 免费糖果
    Uva 725 除法
  • 原文地址:https://www.cnblogs.com/freeopen/p/5482977.html
Copyright © 2011-2022 走看看