leetcode_2. 两数相加

举报
悲恋花丶无心之人 发表于 2021/02/03 01:04:09 2021/02/03
【摘要】 目录 一、题目内容 二、解题思路 三、代码 一、题目内容 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都...

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

二、解题思路

1.判断两数相加是否进位,若进位则不删除尾结点,不进位则删除;

2.进位需要新建节点val为1,不进位则val为0

3.没有高位即指针指向空则加0

三、代码


  
  1. class ListNode(object):
  2. def __init__(self, x):
  3. self.val = x
  4. self.next = None
  5. def __repr__(self):
  6. val_str = ''
  7. p = self
  8. while p:
  9. val_str += str(p.val)
  10. p = p.next
  11. return val_str[::-1]
  12. class Solution(object):
  13. def addTwoNumbers(self, l1, l2):
  14. """
  15. :type l1: ListNode
  16. :type l2: ListNode
  17. :rtype: ListNode
  18. """
  19. head = ListNode(0)
  20. # print(head.val, head.next)
  21. p = head
  22. q = p
  23. carry = 0
  24. while l1 or l2:
  25. if l1 is not None:
  26. l1_val = l1.val
  27. # print("l1:", l1_val)
  28. else:
  29. l1_val = 0
  30. if l2 is not None:
  31. l2_val = l2.val
  32. # print("l2:", l2_val)
  33. else:
  34. l2_val = 0
  35. temp = l1_val + l2_val + carry
  36. if temp >= 10:
  37. carry = 1
  38. p.val = temp - 10
  39. p.next = ListNode(1)
  40. else:
  41. carry = 0
  42. p.val = temp
  43. p.next = ListNode(0)
  44. q = p
  45. p = p.next
  46. if l1 is not None:
  47. l1 = l1.next
  48. if l2 is not None:
  49. l2 = l2.next
  50. if q.next.val == 0:
  51. q.next = None
  52. del p
  53. return head
  54. if __name__ == '__main__':
  55. l1 = ListNode(2)
  56. l1.next = ListNode(4)
  57. l1.next.next = ListNode(3)
  58. l2 = ListNode(5)
  59. l2.next = ListNode(6)
  60. l2.next.next = ListNode(4)
  61. s = Solution()
  62. ans = s.addTwoNumbers(l1, l2)
  63. print(ans)

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/110231520

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。