题目描述
第一次尝试【链表->数字->链表】
思路一:
- 两个函数:链表->数字,数字->链表;
- 分别将两个加数链表化为数字相加;
- 将和化为链表返回。
思路二:
- 由于链表是高低位反向表示数字的,所以第一个结点是个位,第二个结点是十位…
- 同时遍历两个链表,每往后走一个结点就扩大十倍,同时在这里做加法;
- 步骤二直到两个链表遍历结束;
- 将和转化为链表返回。
写了思路一,思路二和思路一大同小异,不写了,懒(°ω°」∠)
1 | # Definition for singly-linked list. |
debug
原因:链表转数字的时候判断有误,看到人家头结点val==0直接就一票否决返回0了。1
2if head.val == 0:
return 0
解决:应该再判断是不是只有这一个结点啊喂,只有一个val为0的结点的话是0没错,但只有最后一位是0有何不可啊。1
2if head.val == 0 and head.next == None:
return 0
第二次尝试【加法进位】
那么,就按加法运算法则来一位一位地相加进位吧;
emmmm..虽然思路是有的但是看到人家的只有几行就运过来了(〃ノωノ)
1 | # Definition for singly-linked list. |
人家的coding
和我第一个代码的思路大致一样,就是其中的实现比较简单,人家就是人家,人家永远比你聪明哈哈哈o(╥﹏╥)o
cr: 两个用链表表示的数字相加
思路:
- 将链表整体转成str,再reverse
- reverse之后转成int相加,得到re
- re再次reverse之后,循环转成链表
1 | # Definition for singly-linked list. |
