golang 算法题 : 两数相加

package main

import "fmt"

type ListNode struct {   Val  int Next *ListNode}

func main() {   l1 := &ListNode{      Val: 1, Next: &ListNode{         Val: 2, Next: &ListNode{            Val: 3, }, }, }   l2 := &ListNode{      Val: 4, Next: &ListNode{         Val: 5, Next: &ListNode{            Val: 6, }, }, }   l3 := addTwoNumbers(l1, l2)   num := "" for l3 != nil {      val := l3.Val      num = fmt.Sprintf("%s%d", num, val)      l3 = l3.Next   }   fmt.Println(num)}

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {   var head *ListNode var previous *ListNode var current *ListNode var carry int for l1 != nil || l2 != nil {      v1 := 0 v2 := 0 if l1 != nil {         v1 = l1.Val      }      if l2 != nil {         v2 = l2.Val      }      result := v1 + v2 + carry      nodeVal := result % 10 carry = result / 10 current = &ListNode{         Val: nodeVal, }      if head == nil {         head = current      }      if previous != nil {         previous.Next = current      }

      previous = current

      if l1 != nil {         l1 = l1.Next      }      if l2 != nil {         l2 = l2.Next      }

   }

   if carry > 0 {      current = &ListNode{         Val: carry, }      if head == nil {         head = current      }      if previous != nil {         previous.Next = current      }   }

   return head}

原文地址:https://www.cnblogs.com/w3liu/p/10850325.html

时间: 2024-10-07 23:58:57

golang 算法题 : 两数相加的相关文章

letcood 算法题 -- 两数相加

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 链接:https://leetcode-cn.com/problems/two-sum 我的解答: /** * @param

LeetCode 第2题 两数相加

/* T2:两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807*/ /** * Definition for

LeetCode算法题——两数之和(python)

两数之和: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用.例如:给定 nums = [2, 7, 11, 15], target = 9.由nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1] 原文地址:http://blog.51cto.com/13921683/2318829

关于力扣第二题 ---两数相加

题目描述: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 解题思路:直接建一个l3,把传进来的l1 l2的val相

leetcode第二题:两数相加

1. 题目(题目链接:https://leetcode-cn.com/problems/add-two-numbers) 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -

每日一道算法题--两数之和

题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 代码: function(nums, target) { let arr = [] for (let i = 0

【leetcode】 算法题2 两数相加

问题 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 代码实现 #include <vector> #include <map> #include <iostream>

Leetcode算法系列(链表)之两数相加

Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和.您可以假设除了数字 0 之外,这两个数都不会以 0 开头.示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807 链接:https://le

leetcode刷题2:两数相加add_two_numbers

题目:两数相加 (难度:中等) 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字. 将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 思路: 本题的思路很简单,按照小学数学中学习的加法原理从末尾到首位,对每一位对齐相加即可. 技巧在于如何处理不同长度的数字