原题链接:#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
Add Two Numbers**:给定两个非空链表表示两个非负整数,相加后返回结果链表。 - **141. Linked List Cycle**:判断链表是否有环,如有,找到环的入口节点。 - **19. Remove Nth From End**:移除链表中的第 n 个...
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: carry = 0 dummy = ListNode(0) curr = dummy while l1 or l2 or carry: if l1: carry += l1.val l1 = l1.next if l2: carry += l2.val...
2. **Add Two Numbers**(两数相加):此题要求实现一个功能,将两个非负整数表示的链表相加。每个节点包含一个数字,链表的顺序代表数字的位值。解题方法通常是迭代或递归地处理链表,同时考虑进位。教程提供了C++...
leetcode 分类leetcode 问题分类 leetcode代码仓库,我的解题...#2:Add Two Numbers 分而治之 #53:Maximum Subarray 队列/集 #3:Longest Substring Without Repeating Characters 优先队列 #23:Merge k Sorted Lists
这个“python-leetcode面试题解之两数相加AddTwoNumbers.zip”压缩包聚焦于LeetCode中的一道经典面试题——"两数相加"(Add Two Numbers)。这道题主要考察的是链表操作和基本的计算逻辑。 题目描述:给定两个非空...
判断链表是否为回文链表 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!解决的问题有:第一:两个链表的最后一个值相加后进位的问题;第二:两个链表的...
在实际应用中,我们通常会编写一些测试用例来验证函数的正确性,这可以通过创建模拟链表并调用`addTwoNumbers`函数来完成。在提供的`main.js`文件中,可能包含了此类测试用例。例如: ```javascript let l1 = new ...
- 链表结构常出现在各种与链表操作相关的题目中,如 AddTwoNumbers 题目要求对链表表示的两个数进行加法操作。 - 链表的逆序、排序、合并等操作也是常见的考察点。 6. **二分查找**: - 二分查找被广泛用于在...
"Leetcode-Answer-main" 文件可能是一个主目录,包含了不同问题的解决方案文件夹或文件,这些文件通常以问题的编号和简短描述命名,如 "001-two-sum" 或 "002-add-two-numbers"。 在解 LeetCode 题目时,开发者会...
- **2.2.1 Add Two Numbers** - 两个链表表示的大数相加。 - 实现思路:模拟加法过程,逐位相加并处理进位。 - **2.2.2 Reverse LinkedList II** - 反转链表的一部分。 - 实现思路:找到反转部分的起始和结束...
例如,如果你看到一个名为"2_addTwoNumbers.java"的文件,那么它很可能对应的是LeetCode上的第2题——“两数之和”。 这个项目的代码风格和实现方式是学习高质量Java编程的一个很好的资源。每个解决方案通常都是...
在描述中提到了"twoSum"和"addTwoNumbers",这两个都是LeetCode上的经典题目,主要涉及JavaScript编程语言。现在,我们将深入探讨这两个知识点: 1. **两数之和(twoSum)**: 这是LeetCode上的第一道题目,编号为1。...
每个子文件夹内部则会有具体的题目编号和题目名称的代码文件,如“001_two_sum.py”或“002_add_two_numbers.java”。 在LeetCode上,每个问题都有其独特的ID,如001、002等,这些问题通常按照难度级别(简单、中等...
def addTwoNumbers(self, l1, l2): if l1 is None: return l2 if l2 is None: return l1 pummy = ListNode(0) p = pummy carry = 0 while l1 and l2: p.next = ListNode((l1.val + l2.val + carry) % ...
- Add Two Numbers: 输入是两个非空的链表,表示两个非负整数,它们以相反的顺序存储。需要正确地相加这两个数,并以链表形式返回。 - Median of Two Sorted Arrays: 给定两个排序的数组,找到它们的中位数。解决这...
难度:中等 一、题目描述: 二、解题分析: 根据题目这道题要注意两个点: 相加进位 两个链表长度不一定... def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: newNode=ListNode(0) ansNode
非空 的链表,表示两个非负的整数。它们每位数字都是按照?逆序?的方式存储的,并且每个节点只能存储?一位?数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以...