首页 > 其他分享 >20241107,LeetCode 每日一题,使用 Go 计算两数相加

20241107,LeetCode 每日一题,使用 Go 计算两数相加

时间:2024-11-06 20:23:41浏览次数:1  
标签:ListNode nil 20241107 Next tail l2 l1 Go LeetCode

思路

  1. 模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法。每两个节点的值相加,并记录进位。

  2. 逐节点相加

    • 创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值,结果存储到新链表的节点中。
    • 计算过程中,将(l1.Val + l2.Val + carry)相加的结果拆成两个部分,一部分是当前位的值,另一部分是进位值(例如:(l1.Val + l2.Val + carry) / 10)。
  3. 处理进位:若最终计算完链表后进位不为0,则在结果链表末尾增加一个新节点表示进位。

  4. 边界条件:若链表长度不一,则将缺少的部分视为0;同时确保最后若存在进位,将其单独处理。

代码


type ListNode struct {
	Val  int
	Next *ListNode
}

func addTwoNumbers(l1 *ListNode, l2 *ListNode) (head *ListNode) {
	var tail *ListNode
	carry := 0
	for l1 != nil || l2 != nil {
		var val1, val2 int
		if l1 != nil {
			val1 = l1.Val
			l1 = l1.Next
		}
		if l2 != nil {
			val2 = l2.Val
			l2 = l2.Next
		}
		sum := val1 + val2 + carry
		sum, carry = sum%10, sum/10
		if head == nil {
			head = &ListNode{sum, nil}
			tail = head
		} else {
			tail.Next = &ListNode{sum, nil}
			tail = tail.Next
		}
		if l1 == nil && l2 != nil {
			tail.Next = l2
			break
		}
		if l1 != nil && l2 == nil {
			tail.Next = l1
			break
		}
	}
	if carry > 0 {
		tail.Next = &ListNode{carry, nil}
	}
	return
}

标签:ListNode,nil,20241107,Next,tail,l2,l1,Go,LeetCode
From: https://www.cnblogs.com/denglei1024/p/18530952

相关文章

  • go语言进阶之同步原语
    同步原语资源竞争定义与实现在Go语言中,资源竞争指多个goroutine同时访问共享资源,导致程序的行为不可预测或者不一致。资源竞争通常发生在对同一变量进行读写操作时,如果没有正确的同步机制来控制访问可能会引发资源竞争packagemainimport("fmt""sync")......
  • CF1270 Good Bye 2019
    Dashboard玩构造玩的,服了。A拥有最大牌的必胜。linkB若相邻的差\(\ge2\)则有解,否则根据变化连续性一定无解。linkC加两个数,第一个数为之前所有数的异或和。加进来之后异或为0。第二个数为加完第一个数之后的和。linkD考虑\(k=n-1\)时,分别询问除去每个数之后的第\(......
  • 20241107,LeetCode 每日一题,使用 Go 计算两数相加
    思路模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法。每两个节点的值相加,并记录进位。逐节点相加:创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值,结果存储到新链表的节点中。计算过程中,将(l1.Val+l2.Val+carry)相加的结......
  • 浅析Mongodb注入
    前言不太会Mongodb的用法,这里学习一下简单介绍Mongodb是非关系型数据库(NoSQL),在MySQL中,我们所熟知的几个最常见的概念是数据库(Database)、表(Table)、字段(Column)、记录(Record)、索引(Index),这些术语映射到Mongodb中大概等价于数据库(Database)、集合(Collection)......
  • LeetCode100之接雨水(42)--Java
    1.问题描述        给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。        示例1输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下......
  • Leetcode刷题Python之3254.长度为K的子数组的能量值I
    提示:关于数组子问题的挑战,涉及能量值的计算。文章目录一、问题描述示例二、解题思路三、代码实现1.引入库2.代码解释总结一、问题描述给定一个长度为n的整数数组nums和一个正整数k,我们需要计算每个长度为k的子数组的能量值。能量值的定义如下:如果子数......
  • SciTech-BigDataAIML-Algorithm-Heuristic启发式- A *(Star) Algorithm(A星算法): To
    SciTech-BigDataAIML-Algorithm-Heuristic启发式A*(Star)Algorithm(A星算法):LossFunction:TotalCost="PastCost+PredicativeCost"MeasurementEuclidianDistance(欧几理得距离)\(\large\begin{array}{rl}\\EuDistance(Point_1,Point_2)&=\sqr......
  • SciTech-BigDataAIML-Algorithm-Heuristic启发式-
    SciTech-BigDataAIML-Algorithm-Heuristic启发式-LDA(LatentDirichiletAllocation)TopicsModel主题模型。LDA(LatentDirichiletAllocation,潜在狄利克雷分布)是一种TopicsModel(主题模型),用于在LargeScaleDocs(大量文档)自动发现HiddenTopics(隐藏主题)。在NLP和......
  • C# 使用mongodb 帮助类
    在C#中使用MongoDB,你需要安装MongoDB的C#驱动程序,通常使用MongoDB.Driver。以下是一个简单的帮助类,用于连接MongoDB数据库并执行基本的CRUD操作。首先,通过NuGet安装MongoDB.Driver:Install-PackageMongoDB.DriverusingMongoDB.Driver;usingSystem;usingSystem.Collectio......
  • 2529.正整数和负整数的最大计数(leetcode)
    https://leetcode.cn/problems/maximum-count-of-positive-integer-and-negative-integerclassSolution{publicintmaximumCount(int[]nums){//思路:由于数组非递减,考虑logn实现//因此可以有二段性可以二分//即寻找正数和负数的分界点t......