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
    
    
  • 相关阅读:
    Java中存取权限和修饰符public、private、protected和default的区别和联系
    java集合之ArrayList,TreeSet和HashMap分析
    ResultSet,RowSet,OracleCachedRowSet和RowSetMetaData区别及联系
    实战篇
    kubernetes系列之 service代理模式ipvs
    Python Jinja2的简单使用
    Helm v3从入门到实战
    迷宫
    python多线程下载文件
    乱码,编码
  • 原文地址:https://www.cnblogs.com/duanming/p/11830264.html
Copyright © 2011-2022 走看看