Python练习:解题 - 两数相加(JS, TS, PY3版)

简介: Python练习:解题 - 两数相加(JS, TS, PY3版)

两数相加

题目描述

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

解题思路

其实这题比较简单,无非是两个链表之间同层级的数字相加,唯一要注意的就是如果相加之后数字大于10,需要往下一级+1,当前级数是个位的那个数字。基本也是一个循环可以解决的。再注意处理下,如果一个链表长度长于另一个链表时的边界处理,其余就没啥了。

py
Python练习:解题 - 两数相加(JS, TS, PY3版)
JS版

/**

  • @param {ListNode} l1
  • @param {ListNode} l2
  • @return {ListNode}
    */const addTwoNumbers = (l1, l2) => {

let l3 = null
let cache = 0
let tens = 0
while (l1 || l2) {
let total = 0
if (l1) {
let l1Head = l1.val
total += l1Head
l1 = l1.next }
if (l2) {
let l2Head = l2.val
total += l2Head
l2 = l2.next }
total += tens if (total >= 10) {
total -= 10
tens = 1
} else {
tens = 0
}
let node = new ListNode(total)
if (cache) {
cache.next = node
cache = node } else {
l3 = node
cache = l3 }
}
if (tens === 1) {
cache.next = new ListNode(1)
}
return l3}

TS版

class ListNode {
val: number
next: ListNode | any
constructor(value: number) {
this.val = value this.next = null
}}
/**

  • @param {ListNode} l1
  • @param {ListNode} l2
  • @return {ListNode}
    */const addTwoNumbers = (l1: ListNode, l2: ListNode) => {

let l3: null | ListNode = null
let cache: ListNode | null = null
let tens: number = 0
while (l1 || l2) {
let total: number = 0
if (l1) {
let l1Head = l1.val
total += l1Head
l1 = l1.next }
if (l2) {
let l2Head = l2.val
total += l2Head
l2 = l2.next }
total += tens if (total >= 10) {
total -= 10
tens = 1
} else {
tens = 0
}
let node = new ListNode(total)
if (cache) {
cache.next = node
cache = node } else {
l3 = node
cache = l3 }
}
if (tens === 1) {
cache.next = new ListNode(1)
}
return l3}
PY版

Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution:

def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
l3 = None
cache = 0
tens = 0
while l1 or l2:
total = 0
if l1:
l1Head = l1.val
total = total + l1Head
l1 = l1.next
if l2:
l1Head = l2.val
total = total + l1Head
l2 = l2.next
total = total + tens if total >= 10:
total = total - 10
tens = 1
else:
tens = 0
node = ListNode(total)
if cache:
cache.next = node
cache = node else:
l3 = node
cache = l3 if tens == 1:
cache.next = ListNode(1)
return l3

相关文章
|
13天前
|
Web App开发 JavaScript 前端开发
使用Python调用JavaScript进行网页自动化操作
使用Python调用JavaScript进行网页自动化操作
|
1月前
|
数据采集 存储 JavaScript
基于Python 爬书旗网小说数据并可视化,通过js逆向对抗网站反爬,想爬啥就爬啥
本文介绍了如何使用Python编写网络爬虫程序爬取书旗网上的小说数据,并通过逆向工程对抗网站的反爬机制,最后对采集的数据进行可视化分析。
基于Python 爬书旗网小说数据并可视化,通过js逆向对抗网站反爬,想爬啥就爬啥
|
29天前
|
JavaScript 算法 前端开发
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
153 1
|
12天前
|
Web App开发 JavaScript 前端开发
探索Node.js后端开发之旅深入浅出Python装饰器
【8月更文挑战第29天】在数字化时代,掌握一门后端编程语言变得尤为重要。Node.js作为一种基于JavaScript的服务端平台,因其高性能、轻量级的特性而广受欢迎。本文将引导读者了解Node.js的基本概念、核心模块以及如何利用它来构建一个简易的Web服务器。通过本文的学习,你将获得使用Node.js进行后端开发的初步技能,并理解其在现代Web开发中的应用价值。
|
2月前
|
机器学习/深度学习 数据采集 前端开发
网络爬虫开发:JavaScript与Python特性的小差异
我们以前写JavaScript的代码时,在遇到了发送请求时,都是需要去await的。 但是为什么Python代码不需要这样做呢? 这就是因为JavaScript是异步的,Python是同步的。 JavaScript就需要使用关键词await将异步代码块变为同步代码。
|
2月前
|
Python
Python推导式:小练习
Python推导式:小练习
|
2月前
|
Python
Python 练习实例35
Python 练习实例35
|
2月前
|
Python
Python 练习实例34
Python 练习实例34
|
2月前
|
Python
Python 练习实例36
Python 练习实例36
|
3月前
|
Python
Python 练习实例33
Python 练习实例33
下一篇
DDNS