`
Cwind
  • 浏览: 262822 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
793bb7df-a2a9-312d-8cb8-b66c3af482d1
LeetCode题解
浏览量:52431
社区版块
存档分类
最新评论

LeetCode[链表] - #2 Add Two Numbers

阅读更多

原题链接:#2 Add Two Numbers

 

要求:

给定两个以链表表示的非负整数,链表中的每个节点保存整数中的一位,以倒序排列(例如,321表示为1->2->3)。把这两个数字相加,作为一个链表返回。

 

输入:(2->4->3) + (5->6->4)

输出:7->0->8

 

难度:中等

 

分析:

本题思路比较直接,以两个指针分别遍历两个链表。值得注意的是需要进位的情况的处理。当两个指针指向的节点的值相加大于10时,设置进位标记,结果节点的值设为其和除以10取余。当一个链表遍历完成,则关注另一个链表剩余部分的进位情况即可。

 

解决方案:

Java - 504 ms

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        if(l1==null){
            return l2;
        }else if(l2==null){
            return l1;
        }
        ListNode result;
        ListNode cur;
        int curSum = l1.val + l2.val;
        boolean plusOne = false;
        if(curSum>9){
            curSum = curSum % 10;
            plusOne = true;
        }
        cur = new ListNode(curSum);
        result = cur;
        while (l1.next!=null&&l2.next!=null){
            l1 = l1.next;
            l2 = l2.next;

            if(plusOne){
                curSum = l1.val + l2.val + 1;
            }else {
                curSum = l1.val + l2.val;
            }
            if(curSum>9){
                curSum = curSum % 10;
                plusOne = true;
            }else {
                plusOne = false;
            }

            cur.next = new ListNode(curSum);
            cur = cur.next;
        }
        if(l1.next==null&&l2.next==null) {
            if(plusOne){
               cur.next = new ListNode(1);
            }
            return result;
        }else if(l1.next==null){
            while (l2.next!=null){
                l2 = l2.next;
                if(plusOne){
                    curSum = l2.val + 1;
                    if(curSum>9){
                        curSum = curSum %10;
                        plusOne = true;
                    }else {
                        plusOne = false;
                    }
                }else {
                    curSum = l2.val;
                    plusOne = false;
                }
                cur.next = new ListNode(curSum);
                cur = cur.next;
            }
        }else if(l2.next==null){
            while (l1.next!=null){
                l1 = l1.next;
                if(plusOne){
                    curSum = l1.val + 1;
                    if(curSum>9){
                        curSum = curSum%10;
                        plusOne = true;
                    }else {
                        plusOne = false;
                    }
                }else {
                    curSum = l1.val;
                    plusOne = false;
                }
                cur.next = new ListNode(curSum);
                cur = cur.next;
            }
        }
        if(plusOne){
            cur.next = new ListNode(1);
        }
        return result;
    }

 简单测试程序

分享到:
评论

相关推荐

    leetcode2sumc-2021-LeetCode-02_Add_Two_Numbers:2021-LeetCode-02_Add_Two

    leetcode 2 和 c 2021-LeetCode-02_Add_...addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? { guard l1 != nil && l2 != nil else { return nil } var resultTail = ListNode() let resultHead = resu

    leetcode分类-leetcode:leetcode问题的代码

    leetcode 分类leetcode 问题分类 leetcode代码仓库,我的解题...#2:Add Two Numbers 分而治之 #53:Maximum Subarray 队列/集 #3:Longest Substring Without Repeating Characters 优先队列 #23:Merge k Sorted Lists

    判断链表是否为回文链表leetcode-LeetCode-Exercise:只是一个自我练习的leetcode合集

    判断链表是否为回文链表 leetcode leetCode-Exercise 个人 LeetCode 练习合集。 目前需要使用的数据结构 题解 Two Sum Given an array of integers, return indices of the two numbers such that they add up to a ...

    leetcode add two numbers

    自己写的一个完整的程序,包括main函数,在VS上面提交通过,但是放到leetcode上面会出现问题;只是作为一个参考,一起学习学习0.o!解决的问题有:第一:两个链表的最后一个值相加后进位的问题;第二:两个链表的...

    LeetCode刷题笔记——#2. 两数相加

    难度:中等 一、题目描述: 二、解题分析:   根据题目这道题要注意两个点: 相加进位 两个链表长度不一定... def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: newNode=ListNode(0) ansNode

    addTwoNumbers_leetcode_

    非空 的链表,表示两个非负的整数。它们每位数字都是按照?逆序?的方式存储的,并且每个节点只能存储?一位?数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以...

    leetcode中国-leetcode_python3:用Python3练习leetcode

    leetcode中国 leetcode_python 通过刷leetcode题目,来锻炼自己的编程思想和编程能力。这里我会首先通过自己的努力去完成每一道题目,解决不了的我也会参考各位大佬的答案。当然每一道题目我都用两种方法去完成,一...

    leetcode算法题-链表操作(两数相加)

    leetcode 算法题: 两数相加 ...链接:https://leetcode-cn.com/problems/add-two-numbers 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 由题意可知,链表为逆

    华为leetcode-ProgrammingExercises:Leetcode和NewCoder练习

    Source2:LeetCode -> Problems: code_1.org 计算字符串最后一个单词的长度 code_2.org 计算字符个数 code_3.org 1. Two Sum code_4.org Add Two Numbers code_5.org Longest Substring Without Repeating Characters...

    leetcode下载-Leetcode:力码

    由于链表是逆置的,所以直接顺序遍历两个链表,按照加法器规则依次相加各节点,并进位 最后一组相加的进位如果为1,要记住加进结果里 为了计算上的统一, 可以把两个数组扩充到一样长 遍历完俩,再写两个循环遍历...

    leetcode答案-code:学习

    add-two-numbers 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表...

    leetcode答案-leetcode:享受

    数组除自身的乘积盗贼计数位addTwoNumbers MergeTwoSortedLists(R) 反向链表(R) 回文链表(R) 3.28 N_aryTreePreorderTraversal(R) N_aryTreePostorderTraversal(R) 同树(R) BinaryTreeLevelOrderTraversa

    acm和leetcode难度-leetcode:leetcode算法分析和代码实现

    acm和leetcode难度 leetcode 解题列表 俗话说: 熟读唐诗三百首, 不会作诗也会吟. 要想掌握好算法和数据结构, 老王觉得至少需要两样东西: 体系化的学习 一定量的练习 最近老王听说很多人喜欢去leetcode上刷题, 就去看...

    leetcode答案-LeetCode:力码

    2.addTwoNumbers 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表...

    leetcode338-Leetcode:力码

    AddTwoNumbers (2) 二叉树之字形水平顺序遍历(103) 二叉树的最大深度 (104) 不带 +、- 运算符的两个数字相加 (371) 移零 (283) 除自身以外的数组的乘积 (238) 前 K 个频繁元素 (347) 中序遍历 [LPR] (94) 预序遍历...

    leetcode实现strstr-leetcode-js:js刷leetcode

    leetcode实现strstr leetcode-js 记录刷leetcode分析过程,希望一点点进步! leetcode地址 刷题顺序 按照顺序刷第一遍,记录实现思路,自己的优化方案,并研究高票大佬的思路。 已完成题目归档 序号 题目 题解 实现...

    判断链表是否为回文链表leetcode-Competitive-Programming:我对竞争性编程问题的解决方案

    判断链表是否为回文链表 leetcode 我的问题的soutions。 简单的问题 问题一 问题描述 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume...

    leetcode正方形坐标-LeetCode_Ansewer:leetcode中文答案

    leetcode 坐标Leetcode 答案。 路不远,到2016-03-15有337题。 加油!我的朋友们。 #LeetCode ...Numbers(水)分析大数加法,链表实现。 /* * * Definition for singly-linked list. * struct ListN

    leetcode算法题主函数如何写-LeetCode:LeetCode程序

    leetcode算法题主函数如何写 LeetCode LeetCode程序 ##NO.1 Two Sum 解题思路:首先用一个结构数组记录整个数组的数以及其原本所在的位置,然后对这个数组进行升序排列,再对排序之后的数组同时从两头查找,一头一尾...

    lrucacheleetcode-leetcode-1:leetcode-1

    2. Add Two Numbers 链表求和,哨兵节点 3. Longest Substring Without Repeating Characters 最长没有重复字符的子序列 记录各字符最近一次出现的位置 4. Median of Two Sorted Arrays 求两有序数列的中位数,可...

Global site tag (gtag.js) - Google Analytics