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;
    }

[ 官方题解 ]:

  • 方法一:模拟,具体思路同上
相关推荐
2501_941805311 小时前
智慧零售平台中的多语言语法引擎与实时推荐系统实践
leetcode
mit6.8246 小时前
bfs|栈
算法
CoderYanger7 小时前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
jllllyuz8 小时前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
夏鹏今天学习了吗8 小时前
【LeetCode热题100(72/100)】前 K 个高频元素
leetcode
稚辉君.MCA_P8_Java8 小时前
DeepSeek 插入排序
linux·后端·算法·架构·排序算法
多多*8 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
덕화8 小时前
【面试宝典】线上问题逆向分析1
面试·职场和发展
美团程序员8 小时前
一篇文章教你搞定:”xx 功能如何测试?“常见面试题型!
测试工具·面试·职场和发展·测试用例
.YM.Z9 小时前
【数据结构】:排序(一)
数据结构·算法·排序算法