LeetCode算法第二题详解

这篇博客详细讲解了LeetCode中一道关于链表的算法题,即如何将两个逆序存储的非负整数链表相加,返回新的链表。题目要求不以0开头,示例如342 + 465 = 807,解题关键在于理解链表结构并正确处理进位。
摘要由CSDN通过智能技术生成

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

你可以假设除了数字 0 之外,这两个数字都不会以零开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807


一点思路:
这其实是一个单项链表的题目,对链表这种数据结构,每一个元素必须包含数值和后继两部分,而本题的难点就在于此。

详细代码及注释:

public class LeetCode_x2 {
	public static LinkNode returnLinkNode(LinkNode y1,LinkNode y2) {
		LinkNode newNode = new LinkNode(0);
		LinkNode p = y1, q = y2, curr = newNode;
		//进位的数值
		int arr = 0;
		//元素有一个不为null,实行计算
		while(p != null || q != null) {	
		    int x = (p != null ) ? p.data : 0; // 需要考虑位数不同的数字相加
            int y = (q != null ) ? q.data : 0;
			int sum = 0;
			sum = (x+y+arr);
			arr = sum / 10;
			//创建一个数值为 (sum %10 )的新结点,并将其设置为当前结点的下一个结点,然后将当前结点前进到下一个结点,这是最难的地方ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值