Leetcode Add Two Numbers (java)
2018-06-18 03:04:20来源:未知 阅读 ()
解法:
class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode l3 = null; boolean add = false; while (l1 != null || l2 != null) { //位数相加 int plus; if (l1 == null) { plus = l2.val; } else if (l2 == null) { plus = l1.val; } else { plus = l1.val + l2.val; } if (add) { plus++; add = false; } //生成节点 ListNode temp; if (plus >= 10) { temp = new ListNode(plus % 10); add = true; } else { temp = new ListNode(plus); } //拼接节点 ListNode l3Head = l3; if (l3 == null) { l3 = temp; if (add && (l1 == null || l1.next == null) && (l2 == null || l2.next == null)) { l3.next = new ListNode(1); } } else { while (l3Head.next != null) { l3Head = l3Head.next; } l3Head.next = temp; if (add && (l1 == null || l1.next == null) && (l2 == null || l2.next == null)) { l3Head.next.next = new ListNode(1); } } //跳到下一位 if (l1 == null) { l2 = l2.next; } else if (l2 == null) { l1 = l1.next; } else { l1 = l1.next; l2 = l2.next; } } return l3; } }
最开始有三种思路:
- 转换成数值相加后,在转换成链表,但数值过大,使用long也不足以存储
- 翻转链表进行相加,但未翻转前更便于相加进位
- 直接使用链表进行相加进位
最后采用了最后一种思路
github地址:https://github.com/CyanChan/leetcode
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:jstack工具介绍
- LeetCode 287. 寻找重复数 2020-05-31
- LeetCode 5. 最长回文子串 2020-05-22
- LeetCode 21. 合并两个有序链表 2020-05-22
- LeetCode 面试题55 - I. 二叉树的深度 2020-05-22
- LeetCode 104. 二叉树的最大深度 2020-05-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash