博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode2--->链表中对应位相加(进位)
阅读量:4499 次
发布时间:2019-06-08

本文共 1640 字,大约阅读时间需要 5 分钟。

题目:

给定两个单链表,单链表中的数都是非负数。链表中的数字都是反向存储的,,每个节点都是个位数,将链表对应的位相加,返回最终的结果;

举例:

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)

Output: 7 -> 0 -> 8

解题思路:

  其本质是将链表1和链表2反转之后,对应位相加且进位,结果进行反转,比如上述例子中:342+465 = 807;但由于链表是单链表,不能从后往前遍历,因此可以转换为从前向后加,向后进位,即243+564=708;下面列出解题的几个关键点:

1. 代码中是将链表2加到链表1上的,因此需要注意当链表1比较短的情况,需要使用链表1的最后一个节点链接链表2;

2. 最后一次需要进位时,要扩展节点的情况;比如243 + 567 = 7011;

代码如下:

1 /** 2  * Definition for singly-linked list. 3  * public class ListNode { 4  *     int val; 5  *     ListNode next; 6  *     ListNode(int x) { val = x; } 7  * } 8  */ 9 public class Solution {10     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {  // l1与l2对应位的值相加,向后进位11         if(l1 == null || l2 == null)12             return null;13         ListNode node1 = l1;14         ListNode node2 = l2;15         ListNode prev = null;16         int jinwei = 0;  // 进位17         while(node1 != null){18             node1.val += jinwei;19             if(node2 != null){20                 node1.val = node2.val + node1.val;21                 node2 = node2.next;  22             }23             jinwei = node1.val / 10;24             node1.val = node1.val % 10;25             prev = node1;26             node1 = node1.next;27         }28         while(node2 != null){  // 链表1比较短的情况29             node2.val += jinwei;30             jinwei = node2.val / 10;31             node2.val = node2.val % 10;32             prev.next = node2;33             node2 = node2.next;34             prev = prev.next;35         }36         if(jinwei > 0)  // 最后还要进一位37             prev.next = new ListNode(jinwei);38         return l1;39     }40 }

 

转载于:https://www.cnblogs.com/leavescy/p/5877755.html

你可能感兴趣的文章
PHP-函数
查看>>
微软Azure AspNetCore微服务实战 第一期
查看>>
命令行调用dubbo远程服务
查看>>
virtualbox 创建com对象失败
查看>>
编写 jQruy 插件 框架
查看>>
JavaScript常用获取宽高的方法
查看>>
开发Web Service的几种方式
查看>>
Dynamics 365 CRM 添加自定义按钮
查看>>
缺陷概述
查看>>
使用Eclipse对FFmpeg进行调试
查看>>
R语言数据类型
查看>>
hdu3267 Graph Game 缩点 + 博弈
查看>>
java 自定义异常类
查看>>
小橙书阅读指南(七)——优先队列和索引优先队列
查看>>
例行报告
查看>>
mysql操作类库--摘抄
查看>>
oracle 用户管理(一)
查看>>
QT下自定义QQ聊天窗口tab控件
查看>>
如何从iTunes Connect中提款呢?
查看>>
Hibernate入门之关系篇:多对一和一对多映射
查看>>