2. 两数相加

2. 两数相加

总结:
	想这种题目首先
	--知道什么是链表,线性的,随机存储的
	--知道如何求和
		cur1+cur2+jinwei
	感觉没什么

很蠢的写法,大量使用数据类型的变换

def fun1(l1,l2):
    '''
        基本思路:
            --首先将l1和l2的数字提出
            --然后进行求和
            --创建新的链表,将数字一一放入
        很蠢的写法
    :param l1:
    :param l2:
    :return:
    '''
    str_1 = ''
    str_2 = ''
    while l1:
        str_1 = str(l1.val) + str_1
        l1 = l1.next
    while l2:
        str_2 = str(l2.val) + str_2
        l2 = l2.next
    sum_ = eval(str_1) + eval(str_2)
    head = ListNode(0)
    tail = head
    sum_ = str(sum_)
    for i in reversed(range(len(sum_))):
        tail.next = ListNode(eval(sum_[i]))
        tail = tail.next
    return head.next

2-4-3
5-6-4
pre=0#进位
l1+l2+pre
然后 2+5不需要进位,直接放入
4+6 10,进位,放入
3+4 7 ,不进位进位,放入

def fun2(l1,l2):
    #在遍历过程中,直接将其相加
    '''
        cur=l1_cur+l2_cur+jinwei
        tail.next=ListNode(cur%10)
        jinwei=cur//10
        tail=tail.next
        没问题吧,大致的思路就是这样
        并且存在这种问题
            --8999  8
                所以需要同时循环以及单个循环
            --888 888
                所以需要进位

    :return:
    '''
    jinwei=0
    head=ListNode(0)
    tail=head  #用来连接
    while l1 and l2:
        cur=l1.val+l2.val+jinwei
        tail.next=ListNode(cur%10)
        jinwei=cur//10
        tail=tail.next
        l1=l1.next
        l2=l2.next
    while l1:
        cur=l1.val+jinwei  #这里存在  888 88那么还是有进位
        tail.next=ListNode(cur%10)
        jinwei=cur//10
        tail=tail.next
        l1=l1.next
    while l2:
        cur = l2.val + jinwei  # 这里存在  888 88那么还是有进位
        tail.next = ListNode(cur % 10)
        jinwei = cur // 10
        tail = tail.next
        l2 = l2.next
    #判断是否还有进位
    if jinwei!=0:
        tail.next=ListNode(jinwei)
    return head.next
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值