原题链接:#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; }
相关推荐
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代码仓库,我的解题...#2:Add Two Numbers 分而治之 #53:Maximum Subarray 队列/集 #3:Longest Substring Without Repeating Characters 优先队列 #23:Merge k Sorted Lists
判断链表是否为回文链表 leetcode leetCode-Exercise 个人 LeetCode 练习合集。 目前需要使用的数据结构 题解 Two Sum Given an array of integers, return indices of the two numbers such that they add up to a ...
自己写的一个完整的程序,包括main函数,在VS上面提交通过,但是放到leetcode上面会出现问题;只是作为一个参考,一起学习学习0.o!解决的问题有:第一:两个链表的最后一个值相加后进位的问题;第二:两个链表的...
难度:中等 一、题目描述: 二、解题分析: 根据题目这道题要注意两个点: 相加进位 两个链表长度不一定... def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: newNode=ListNode(0) ansNode
非空 的链表,表示两个非负的整数。它们每位数字都是按照?逆序?的方式存储的,并且每个节点只能存储?一位?数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以...
leetcode中国 leetcode_python 通过刷leetcode题目,来锻炼自己的编程思想和编程能力。这里我会首先通过自己的努力去完成每一道题目,解决不了的我也会参考各位大佬的答案。当然每一道题目我都用两种方法去完成,一...
leetcode 算法题: 两数相加 ...链接:https://leetcode-cn.com/problems/add-two-numbers 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 由题意可知,链表为逆
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...
由于链表是逆置的,所以直接顺序遍历两个链表,按照加法器规则依次相加各节点,并进位 最后一组相加的进位如果为1,要记住加进结果里 为了计算上的统一, 可以把两个数组扩充到一样长 遍历完俩,再写两个循环遍历...
add-two-numbers 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表...
数组除自身的乘积盗贼计数位addTwoNumbers MergeTwoSortedLists(R) 反向链表(R) 回文链表(R) 3.28 N_aryTreePreorderTraversal(R) N_aryTreePostorderTraversal(R) 同树(R) BinaryTreeLevelOrderTraversa
acm和leetcode难度 leetcode 解题列表 俗话说: 熟读唐诗三百首, 不会作诗也会吟. 要想掌握好算法和数据结构, 老王觉得至少需要两样东西: 体系化的学习 一定量的练习 最近老王听说很多人喜欢去leetcode上刷题, 就去看...
2.addTwoNumbers 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表...
AddTwoNumbers (2) 二叉树之字形水平顺序遍历(103) 二叉树的最大深度 (104) 不带 +、- 运算符的两个数字相加 (371) 移零 (283) 除自身以外的数组的乘积 (238) 前 K 个频繁元素 (347) 中序遍历 [LPR] (94) 预序遍历...
leetcode实现strstr leetcode-js 记录刷leetcode分析过程,希望一点点进步! leetcode地址 刷题顺序 按照顺序刷第一遍,记录实现思路,自己的优化方案,并研究高票大佬的思路。 已完成题目归档 序号 题目 题解 实现...
判断链表是否为回文链表 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 答案。 路不远,到2016-03-15有337题。 加油!我的朋友们。 #LeetCode ...Numbers(水)分析大数加法,链表实现。 /* * * Definition for singly-linked list. * struct ListN
leetcode算法题主函数如何写 LeetCode LeetCode程序 ##NO.1 Two Sum 解题思路:首先用一个结构数组记录整个数组的数以及其原本所在的位置,然后对这个数组进行升序排列,再对排序之后的数组同时从两头查找,一头一尾...
2. Add Two Numbers 链表求和,哨兵节点 3. Longest Substring Without Repeating Characters 最长没有重复字符的子序列 记录各字符最近一次出现的位置 4. Median of Two Sorted Arrays 求两有序数列的中位数,可...