zoukankan      html  css  js  c++  java
  • python经典面试算法题1.3:如何计算两个单链表所代表的数之和

    本题目摘自《Python程序员面试算法宝典》,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中。

    1.2 如何实现链表的逆序
    【华为笔试题】

    难度系数:⭐⭐⭐
    考察频率:⭐⭐⭐⭐

    题目描述:

    给定两个单链表, 链表的每个结点代表一位数,计算两个数的和。例如:输入链表(3 -> 1 -> 5)和链表(5 -> 9 -> 2), 输出:8 -> 0 -> 8, 即 513 + 295 = 808,注意个位数在链表头。

    方法一:整数相加
    把两个单链表的所代表的数字求出来,然后相加完成之后再把结果按照要求存入到一个新的链表中。

    class Node:  # 定义一个结点类
        def __init__(self, data=None):
            self.data = data
            self.next = None
    
    number1 = [5, 1, 3]
    number2 = [2, 9, 5]
    p = q =None
    for index in range(-1, -len(number1)-1, -1):  # 构造两个链表存放513和295
        if index == -1:
            num1 = Node(number1[index])
            num2 = Node(number2[index])
            p = num1
            q = num2
            continue
        p.next = Node(number1[index])
        p = p.next
        q.next = Node(number2[index])
        q = q.next
    
    
    # 方法一:整数相加
    def add(number_1, number_2):  # 传入的是两链表的第一个结点
        p = number_1
        q = number_2
        n1 = 0  # 用来存放第一个整数
        i = 0
        while p is not None:  # 得到第一个数字的值
            n1 += p.data * 10**i
            i += 1
            p = p.next
    
        n2 = 0  # 用来存放第二个整数
        i = 0
        while q is not None:  # 得到第二个数字的值
            n2 += q.data * 10**i
            i += 1
            q = q.next
    
        sum = n1 + n2  # 得到两个整数的和
        sum_str = str(sum)  # 把结果转成字符串
        for index in range(-1, -len(sum_str)-1, -1):  # 倒序把结果以整型格式存入到链表中
            if index == -1:  # 第一个数字
                head = Node(int(sum_str[index]))
                temp = head
                continue
            temp.next = Node(int(sum_str[index]))
            temp = temp.next
    
        return head  # 返回链表的head
    
    
    
    # 查看结果
    p = add(num1, num2)
    while p is not None:
        print(p.data, end="	")  # 8 0 8
        p = p.next
    
    
  • 相关阅读:
    Firefly官方教程之DBentrust使用文档
    《烽烟OL》简介
    《暗黑世界》简介
    CrossApp简介
    内联元素于与块元素的转换 相对定位、绝对定位以及fixed定位 Z轴覆盖
    div介绍 盒子模型边框属性 CSS初始化 文字排版 边框调整 溢出
    CSS样式补充第二天
    CSS样式
    form表单以及内嵌框架标签
    html对a标签的运用以及属性,img图像标签的属性及应用
  • 原文地址:https://www.cnblogs.com/duanming/p/11830264.html
Copyright © 2011-2022 走看看