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)%10;
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)%10;
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)%10;
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)%10;
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.cnblogs.com/IsuxizWorld/p/11219194.html

时间: 2024-10-04 10:20:02

2019年7月20日 - 2的相关文章

tmux使用——2019年11月20日16:40:15

1.tmux 命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令.用户与计算机的这种临时的交互,称为一次"会话"(session) . 会话的一个重要特点是,窗口与其中启动的进程是连在一起的.打开窗口,会话开始:关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完. 一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令.这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的

面试总结(2019年12月20日)

1.js实现promise 1.promise和async/await的区别 函数前面多了一个async关键字.await关键字只能用在async定义的函数内.async函数会引式返回一个promise,改promise的resolve值就是函数return的值. 简洁:使用async和await明显节约了不少代码,不需要.then,不需要写匿名函数处理promise的resolve的值,不需要定义多余的data变量,还避免了嵌套代码. async/await让try/catch 可以同时处理同

2019年8月20日 item系列

通过 操作字典的方式触发,用item 通过 点 点方式出发,用attr class Foo: def __getitem__(self, item):#查询,注意item是用于字典的操作 print('getitem',item) return self.__dict__[item] def __setitem__(self, key, value):#赋值 self.__dict__[key]=value #系统底层的方式 print('setitem') def __delitem__(se

2019年10月20日第一次参加自学考试

第一次参加自学考试,考试前也没怎么复习,心想着今天就不浪费时间了,就不去考试了,但是,报都报了,来试试,体验体验可还行. 到了考场第一个感觉就是人好多,第二个感觉就是女生好多.人山人海. 进入考场发现来考试的人并不是很多,然后陆陆续续就都进来了,原来我给记错了,考试开始十五分钟后不能再进入考场的.记成考试前十五分钟后不能进入考场.路上那叫一个赶呀. 大多数都是学生. 偶尔几个老考试. 早上是中国近代史. 下午是软件工程. 早上可能人多点,下午的科目可能人就少多了. 考试时间超级漫长,两个半小时,

2019年12月20日 java学习知识记录

一个"java"源文件中是否可以有多个类? 有什么限制? 一个java的源文件中都可以都多个类 ,但是public的类只能有一个  而且public的名字要和文件名一致(大小写也得一致) java 有没有 goto? java中有goto 但是现在java中不使用 &和&&有什么区别? &和&&都是逻辑运算符 运算符两边的表达式,如果运算结果都是true的话,结果返回就为true   如果有一边的运算结果为false,那么结果返回的就为f

2019年12月20日是个特殊的日子

那天是个特殊的日子,是煎熬的结束,是新生的开始,我应该怀揣梦想开启自由的航程,不是应该高兴才对吗,可是,更多的是悲伤.在产假结束回到公司后,一切都变了,再不是从前的感觉了,“中年危机”多么可怕的字眼,这个字眼也随之纠缠了我一年有余,说煎熬一点也不为过.曾经想开个花店,研究鲜花行业,让每个喜欢花又因为经济问题望而却步的人都可以每天有鲜花陪伴:曾经想学服装设计,让每个人都很容易的得到适合自己的衣服,而不是一堆不合适的衣服束之高阁.曾经...太多梦想,终究是梦想,胆小.怕风险.怕拖亲人后腿...于是,

开机时自动启动的AutoHotkey脚本 2019年07月08日19时06分

;;; 开机时自动启动的AutoHotkey脚本;; 此脚本修改时间 2019年06月18日20时48分;; 计时器创建代码段 -----------------------------------------------------------------------------------------; SetTimer可以模拟多线程从而不影响主线程的流畅执行; 请在SciTE4AutoHotkey中选中单词并按快捷键F12跳转到函数定义处; 绿色免安装程序,统一都分类保存在本地磁盘D分区文

第三章 管道符、重定向与环境变量 2019年7月17日星期三 第四课

2019年7月17日星期三   第四课 2.7 文件目录管理命令 1.touch命令    创建空白文件或设置文件时间 如:touch haha.txt touch -d “19:00”   修改文件访问和者修改时间 -a 修改读取时间   -m 修改修改时间 -d前两个都修改 2.mkdir命令    创建目录 如果要创建迭代关系的目录要加参数  -p 如:mkdir -p a/b/c/d/e/f/g 3.cp命令    复制文件或目录 复制目录时要加参数 -r 如:cp -r Music/

2019年12月8日 运飞龙 linux

1.system v init运行级别及作用 init运行级别                  作用 0                                  关机 1                                  单用户模式 2                                  多用户的文本界面 3                                  多用户的文本界面 4