leetcode刷题日记——两数相加

题目描述

思路

  • 通过两个循环将 l1, l2存储的数字读出,然后求和,再将结果存储链表中

  • 由此发了一个问题,结果溢出,如果使用更大的 long 类型,后续不出所料,仍然超出

  • 所以只能转换思路

    /**

    • Definition for singly-linked list.
    • struct ListNode {
    • 复制代码
      int val;
    • 复制代码
      struct ListNode *next;
    • };
      /
      struct ListNode
      addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
      int num1=0,num2=0,res=0,index=0;
      while(l1){
      num1=num1+l1->valpow(10,index++);
      l1=l1->next;
      }
      index=0;
      while(l2){
      num2=num2+l2->val
      pow(10,index++);
      l2=l2->next;
      }
      res=num1+num2;
      struct ListNode* head=(struct ListNode*)malloc(sizeof(struct ListNode));
      struct ListNode* rear=head;
      if(res==0){
      rear->next=(struct ListNode*)malloc(sizeof(struct ListNode));
      rear=rear->next;
      rear->val=0;
      }else{
      while(res!=0){
      rear->next=(struct ListNode*)malloc(sizeof(struct ListNode));
      rear=rear->next;
      rear->val=res%10;
      res/=10;
      }
      }
      rear->next=NULL;
      return head->next;
      }
  • 既然不能一次性存储所有结果,那么就只能模拟加法器,一位一位的计算

  • 运行如下

    struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
    int carry=0;
    struct ListNode* head=(struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode* rear=head;
    while(l1 || l2 || carry!=0){
    int num1=0,num2=0;
    if(l1){
    num1=l1->val;
    l1=l1->next;
    }
    if(l2){
    num2=l2->val;
    l2=l2->next;
    }
    carry+=num1+num2;
    rear->next=(struct ListNode*)malloc(sizeof(struct ListNode));
    rear=rear->next;
    rear->val=carry%10;
    carry/=10;
    }
    rear->next=NULL;
    return head->next;
    }

官方题解

  • 方法一:模拟,具体思路同上
相关推荐
JieE2126 小时前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2126 小时前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术11 小时前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦12 小时前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
用户4978630507315 小时前
(一)小红的数组操作
算法·编程语言
怕浪猫18 小时前
Electron 系列文章封面图
算法·架构·前端框架
徐小夕20 小时前
JitWord 3.0 正式发布,高精度Word异构解析+复杂组件兼容,打造web端协同Word编辑器
前端·vue.js·算法
通信小呆呆1 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人