博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode题解-2-Add Two Numbers
阅读量:5776 次
发布时间:2019-06-18

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

hot3.png

解题思路

这个题目也是比较简单的。主要需要考虑的是如何处理l1和l2长度不一致的情况,进位的处理,还有特别考虑最后一次进位的情况。

为了简化处理,我采用了一个哑结点作为head,用carry下次操作的进位值,默认是0. 然后从头开始遍历,每次的和等于上一次进位加上2个结点的值(如果存在的话),如果其中一个结点为空,就当值为0处理,直到2个结点都为空。最后2个结点为空时判断进位是否为1,如果是就增加多一个结点。

最终,返回哑结点的下一个结点就可以了。

参考源码

public class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        ListNode head = new ListNode(0);        ListNode curr = head;        int carry = 0;        while (l1 != null || l2 != null) {            int sum = carry;            if (l1 != null) {                sum += l1.val;                l1 = l1.next;            }            if (l2 != null) {                sum += l2.val;                l2 = l2.next;            }            if (sum >= 10) {                carry = 1;                sum -= 10;            } else {                carry = 0;            }            curr.next = new ListNode(sum);            curr = curr.next;        }        if (carry != 0) {            curr.next = new ListNode(carry);        }        return head.next;    }}

转载于:https://my.oschina.net/bonyfish/blog/841160

你可能感兴趣的文章
CSS3边框会动的信封
查看>>
JavaWeb实例设计思路(订单管理系统)
查看>>
source insight中的快捷键总结
查看>>
PC-IIS因为端口问题报错的解决方法
查看>>
java四种线程池简介,使用
查看>>
一般处理程序(.ashx)中session的使用方法
查看>>
EasyUI笔记(二)Layout布局
查看>>
ios View之间的切换 屏幕旋转
查看>>
typedef BOOL(WINAPI *MYFUNC) (HWND,COLORREF,BYTE,DWORD);语句的理解
查看>>
jsp 特殊标签
查看>>
[BZOJ] 1012 [JSOI2008]最大数maxnumber
查看>>
使用VMware安装CentOS
查看>>
gauss消元
查看>>
多线程-ReentrantLock
查看>>
数据结构之链表与哈希表
查看>>
IIS7/8下提示 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求...
查看>>
http返回状态码含义
查看>>
响应式网站对百度友好关键
查看>>
洛谷P2179 骑行川藏
查看>>
(十八)js控制台方法
查看>>