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="\t") # 8 0 8
p = p.next
python经典面试算法题1.3:如何计算两个单链表所代表的数之和的更多相关文章
- python经典面试算法题1.2:如何从无序链表中移除重复项
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.2 如何实现链表的逆序 [蚂蚁金服面试题] 难度系数:⭐⭐ ...
- python经典面试算法题1.4:如何对链表进行重新排序
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.4 对链表按照如下要求重新排序 [微软笔试题] 难度系数: ...
- python经典面试算法题4.1:如何找出数组中唯一的重复元素
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [百度面试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐ 题目描述 ...
- python经典面试算法题1.1:如何实现链表的逆序
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.1 如何实现链表的逆序 [腾讯笔试题] 难度系数:⭐⭐⭐ ...
- C++经典面试算法题
转自:http://blog.csdn.net/f_r_e_e_x/article/details/50770907 //1.实现strcpy. char* MyStrCpy( char *pDest ...
- python 经典排序算法
python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- Java数据结构和算法(一)线性结构之单链表
Java数据结构和算法(一)线性结构之单链表 prev current next -------------- -------------- -------------- | value | next ...
- 远景面试算法题——FolderSize
描述 文件被存储在磁盘上的时候,通常为cluster方式.每个cluster具有固定的大小,一个文件所消耗的空间量始终是cluster大小的整数倍.因此,如果cluster的大小为100字节,165字 ...
随机推荐
- 为什么不同命名空间的docker容器可以相互通信?
一.什么是容器网络栈 所谓容器能看见的"网络栈",被隔离在自己的Network Namespace当中 1.网卡(network interface) 2.回环设备(loopbac ...
- 题解:2018级算法第二次上机 Zexal的流水线问题
题目描述: 样例: 实现解释: 最基础的流水线调度问题,甚至没有开始和结束的值 实现方法即得出状态转移方程后完善即可,设a[][i]存储着第一二条线上各家的时间花费,t[][i]存储着i处进行线路切换 ...
- wamp server mysql数据库中事件不执行的解决办法
先看看看event 事件是否开启 直接执行下列语句即可, show variables like '%sche%'; 如没开启,则开启. (需要数据库超级权限) set global event_sc ...
- mysql的十二条基本语句
在 mysql里,所有语句都以分号作为结束标志! 1.连接服务器 Mysql -u username -p passwd 2.当连上服务器后,首先面对的是库,库有1个或多个,因此我们想对表进行操作的话 ...
- java并发基础及原理
java并发基础知识导图 一 java线程用法 1.1 线程使用方式 1.1.1 继承Thread类 继承Thread类的方式,无返回值,且由于java不支持多继承,继承Thread类后,无法再继 ...
- asp.net core 使用 AccessControlHelper 控制访问权限
asp.net core 使用 AccessControlHelper 控制访问权限 Intro 由于项目需要,需要在基于 asp.net mvc 的 Web 项目框架中做权限的控制,于是才有了这个权 ...
- python常用算法(5)——树,二叉树与AVL树
1,树 树是一种非常重要的非线性数据结构,直观的看,它是数据元素(在树中称为节点)按分支关系组织起来的结构,很像自然界中树那样.树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形 ...
- 比较两个文件的异同Python3 标准库difflib 实现
比较两个文件的异同Python3 标准库difflib 实现 对于要比较两个文件特别是配置文件的差异,这种需求很常见,如果用眼睛看,真是眼睛疼. 可以使用linux命令行工具diff a_file b ...
- iguana::json/xml 序列化框架
环境:win10 vs2017 c++17 boost 1.下载源码:https://github.com/qicosmos/iguana 2.创建工程,包含源码目录.boost库目录:boos ...
- POJ 3259 Wormholes(Bellman-Ford)
题目网址:http://poj.org/problem?id=3259 题目: Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Su ...