[Leetcode刷题]第二题:两数相加
深知自己目前还没能力做到每日一道算法题,目前先定个目标:每周一道题吧~!也不知道能不能坚持下去,这次刷的是leetcode的第二题 。
距离上次刷题已经过了一个月了吧?~? (万恶的莫教练把我拖进MC的坑!!!)
题目: 两数相加
题干:
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself
中文翻译:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
Example:
1 | 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) |
解题思路
我们发现题目给的是一个链表,如果我们把元素依次拿出来整理计算后在填回去,这个过程及代码实现想想都头皮发麻,并且这是道算法题,肯定有巧解的方法。
我们发现链表是从个位开始的,而加法不也是从个位开始加的吗?这时我第一时间想到的就是模拟小学学的竖式计算。
我们简单的分析一下两个数(链表),得到一下几个问题
注意的点
- 当两个数相加大于9时,会发生进位
- 两个数长短不一
- 两个数相加的和不会超过18
- 0和10如何区分表示
有了基本思路,那就开始动手解题:
1 | class Solution: |
结束
- 刷题可以查缺补漏
- 不知道说什么了~~ 不能再咕咕咕咕咕了!