打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
2019年7月20日 - 2

https://leetcode-cn.com/problems/add-two-numbers/submissions/

我的方法:

 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 ans = new ListNode(0);12         ans.next = null;13         ListNode curr = ans;14         15         int c = 0;16         while(l1.next != null && l2.next != null){17             curr.val = (l1.val   l2.val   c);18             c = (l1.val   l2.val   c)/10;19             curr.next = new ListNode(0);20             curr = curr.next;21             l1 = l1.next;22             l2 = l2.next;23         }24         //两数等长度时同时处理最后一个数即可25         if(l1.next == null && l2.next == null){26             curr.val = (l1.val   l2.val   c);27             c = (l1.val   l2.val  c)/10;28             //看最终是否还有一位进位29             if(c == 1){30                 curr.next = new ListNode(c);31                 curr.next.next = null;32             }else{33                 curr.next = null;34             }35             return ans;36         }37         //一长一短时,留下长的那个,把短的的最后一个val记录后用不着了38         ListNode l;39         if(l1.next != null && l2.next == null){40             l = l1;41             curr.val = l2.val;42         }else{43             l = l2;44             curr.val = l1.val;45         }46         //处理短的的最后一位47         curr.val  = l.val   c;48         c = curr.val / 10;49         curr.val %= 10;50         curr.next = new ListNode(0);51         curr = curr.next;52         l = l.next;53         54         while(l.next != null){55             curr.val = (l.val   c);56             c = (l.val   c)/10;57             curr.next = new ListNode(0);58             curr = curr.next;59             l = l.next;60         }61         62         //处理长的的最后一位63         curr.val = (l.val   c);64         c = (l.val   c)/10;65         if(c == 1){66             curr.next = new ListNode(c);67             curr.next.next = null;68         }else{69             curr.next = null;70         }71         72         return ans;73     }74 }

按部就班的考虑与处理.注意不要有考察漏掉的情况

时间复杂度O(n),空间复杂度O(n)

//我所有的时空复杂度都是指级别,有必要具体分析的会特别注明

结果:

官方题解方法:

https://leetcode-cn.com/problems/add-two-numbers/solution/liang-shu-xiang-jia-by-leetcode/

也是朴素方法,区别在于他没有拆开来考虑,而是用了或判断,在末尾前进的时候又加了if

代码量比我的少,优雅一些.

(见仁见智,我不喜欢在简单的循环里加判断,徒增复杂度)

来源:https://www.icode9.com/content-4-341001.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
剑指offer 14 输入一个链表,输出该链表中倒数第k个结点。
​LeetCode刷题实战369:给单链表加一
381,合并两个有序链表(易)
【小Y学算法】⚡️每日LeetCode打卡⚡️——12.合并两个有序链表
LeetCode实战:两数相加
链表算法面试问题?看我就够了!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服