文章目录
- 题目简介
- 题目解答
- 代码:
- 题目链接
大家好,我是晓星航。今天为大家带来的是 两数相加 相关的讲解!😀
题目简介
题目解答
通过题目给的第一个示例来解析
图解如下:
l1的2和l2的5首先相加变为7
这里相加结果为7,进位为0
4和6相加结果是0,但是进位为1
最后一位由3和4相加再加上一个进位1就是8
实战思路:
第一步,l1和l2不为空继续走,而头结点为空,所以直接将头节点和tail节点放入sum余10的结果值7中,sum=l1.val+l2.val+carry
第二步,l1和l2不为空继续走,而头结点不为空,因此head不变,将sum余10的结果值0存在tail.next中,并将tail等于tail.next储存链表结构,此时进位carry为1。
第三步,l1和l2不为空继续走,而头结点不为空,因此head不变,将sum余10的结果值7存在tail.next中,而此时进位为1因此存入tail.next的值为8,最后tail等于tail.next储存链表结构就形成了一个链表
代码:
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode head = null, tail = null;int carry = 0;while (l1 != null || l2 != null) {int n1 = l1 != null ? l1.val : 0;int n2 = l2 != null ? l2.val : 0;int sum = n1 + n2 + carry;if (head == null) {head = tail = new ListNode(sum % 10);} else {tail.next = new ListNode(sum % 10);tail = tail.next;}carry = sum / 10;if (l1 != null) {l1 = l1.next;}if (l2 != null) {l2 = l2.next;}}if (carry > 0) {tail.next = new ListNode(carry);}return head;}
}
题目链接
2. 两数相加 - 力扣(LeetCode)
这里查找了一篇关于链表的文章,觉得很不错便将链接记录下来了
java ListNode 链表 - 一文搞懂 - 博客园 (cnblogs.com)
感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘