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

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

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Example:

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8Explanation: 342 + 465 = 807.
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 class Solution {10     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {11         ListNode first = new ListNode(-1);//指向结果list的头结点12         ListNode iter = first;13         int addOne = 0;14 15         while (l1.val < 0) l1 = l1.next;16         while (l2.val < 0) l2 = l2.next;17 18         while (l1 != null && l2 != null) {19             int val = l1.val + l2.val + addOne;20             addOne = val / 10;//相加的进位21             val %= 10;22             ListNode listNode = new ListNode(val);23             listNode.next = null;24             iter.next = listNode;25 26             l1 = l1.next;27             l2 = l2.next;28             iter = iter.next;29         }30         if (addOne != 0 && l1 == null && l2 == null){31             ListNode listNode = new ListNode(addOne);32             listNode.next = null;33             iter.next = listNode;34         }35 36         if (l1 != null) {37             l1.val += addOne;38             iter.next = l1;39             while (l1.val / 10 > 0 && l1 != null) {40                 addOne = l1.val / 10;41                 l1.val %= 10;42                 if (l1.next == null){43                     ListNode listNode = new ListNode(addOne);44                     listNode.next = null;45                     l1.next = listNode;46                     break;47                 }48                 l1 = l1.next;49                 l1.val += addOne;50             }51         }52 53         if (l2 != null) {54             l2.val += addOne;55             iter.next = l2;56 57             while (l2.val / 10 > 0 && l2 != null) {58                 addOne = l2.val / 10;59                 l2.val %= 10;60                 if (l2.next == null){61                     ListNode listNode = new ListNode(addOne);62                     listNode.next = null;63                     l2.next = listNode;64                     break;65                 }66                 l2 = l2.next;67                 l2.val += addOne;68             }69         }70 71         // 输出结果72 //        while (first != null) {73 //            System.out.print(first.val + "->");74 //            first = first.next;75 //        }76         return first.next;//null77     }78 }

 

转载于:https://www.cnblogs.com/yfs123456/p/10909168.html

你可能感兴趣的文章
5种PHP创建数组的方式,你都了解哪些?
查看>>
文章正在审核中 为什么使用了爬虫代理ip,真实IP还是被封禁了?
查看>>
StructureMap
查看>>
shell中的特殊符号
查看>>
linux文件删除原理
查看>>
Word中使用正则表达式进行查找和替换
查看>>
编译安装apache+mysql+php 支持jpg,gd等
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
python的tab自动补全
查看>>
自制小型Linux
查看>>
发文庆祝我被骗了2000块
查看>>
/bin/rm: 参数列表过长"的解决办法
查看>>
IT界--值得收藏的10大网站
查看>>
创建Kafka0.8.2生产者与消费者
查看>>
表空间的增删改
查看>>
Cisco 路由器硬件信息查询命令
查看>>
ESXi虚拟机的磁盘格式
查看>>
嘚嘚瑟瑟二二二二二二二
查看>>
2003 域环境下 搭建证书服务器
查看>>