当前位置: 首页 > news >正文

2两数相加解题记录

哎呀,以为这道题也不用写题解的……结果还是有坑没跳出来。
最开始想法先计算总和再求出链表

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    // 先算出这个值。测试用例会int类型溢出
    total := 0
    wei := 1
    for l1!=nil && l2!=nil {
        total += (l1.Val+l2.Val)*wei // 进位也是正确的
        l1 = l1.Next
        l2 = l2.Next
        wei *= 10
    }

    for l1!=nil {
        total += l1.Val*wei
        l1 = l1.Next
        wei *= 10
    }

    for l2!=nil {
        total += l2.Val*wei
        l2 = l2.Next
        wei *= 10
    }
    fmt.Println(total)

    // 将total转换为链表
    res := &ListNode{}
    curr := res
    for total != 0 {
        // fmt.Println(total)
        curr.Val = total%10
        total /= 10
        if total !=0 {
            curr.Next = &ListNode{}
            curr = curr.Next
        }
    }
    return res
}

var total int64还是会溢出得用big.Int
还是直接链表相加吧,记得保存进位就好了

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    dummy := &ListNode{}
    curr := dummy
    carry := 0

    for l1 != nil || l2 != nil || carry != 0 {
        sum := carry
        if l1 != nil {
            sum += l1.Val
            l1 = l1.Next
        }
        if l2 != nil {
            sum += l2.Val
            l2 = l2.Next
        }

        carry = sum / 10
        curr.Next = &ListNode{Val: sum % 10}
        curr = curr.Next
    }

    return dummy.Next
}
http://www.dtcms.com/a/99053.html

相关文章:

  • Nyquist插件基础:打印格式化字符串(LISP语言)
  • Java虚拟机(JVM)详解
  • 前端 vue 项目上线前操作
  • Spring Cache:简化缓存管理的抽象框架
  • MCP, LangChain、Dify 区别
  • 3.30日 001:中央海岸VS珀斯光荣
  • 操作系统 :进程概念
  • 集多功能为一体的软件,支持批量操作。
  • web权限划分提权和移权
  • 自行车模型与汽车模型的混合策略在自动驾驶中的多维度协同优化
  • graylog使用过程中的几个问题
  • 根据二叉树创建字符串
  • Linux的进程优先级调度学习笔记
  • 智慧运维平台:赋能未来,开启高效运维新时代
  • React 中props的不可变性,如何在组件中处理需要修改props的情况?
  • 每日一题 MySQL基础知识----(三)
  • 饮食 “妙方”,助力进行性核上性麻痹调养
  • 学校智慧路灯的主要功能有哪些?
  • Python第六章19:函数的多种参数类型对比
  • 【嵌入式学习3】零散知识点
  • 【C++篇】类与对象(上篇):从面向过程到面向对象的跨越
  • 【8】递归之经典题型总结
  • Redis6数据结构之String类型
  • DeepSeek本地部署(linux)
  • 零基础驯服GitHub Pages
  • Linux进程管理之子进程的创建(fork函数)、子进程与线程的区别、fork函数的简单使用例子、子进程的典型应用场景、父进程等待子进程结束后自己再结束
  • Elasticsearch 高级
  • 分库分表策略
  • Flutter:切换账号功能记录
  • 【算法】动态规划:背包问题