力扣崩溃题:链表相加

复制代码
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){

    int sum=0, carry = 0;
    struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode* p = head;

    while(l1 || l2 || carry) {
        sum = 0;
        if(l1) {
            sum += l1->val;
            l1 = l1->next;
        }

        if(l2) {
            sum += l2->val;
            l2 = l2->next;
        }
        sum += carry;

        struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
        newNode->val = sum >=10 ? sum%10 : sum;
        newNode->next = NULL;            
        carry = sum >=10 ? 1 : 0;
        
        p->next = newNode;
        p = p->next;
    }
    return head->next;

}

由于力扣的用例太大了,导致笔者的方法用不了,就是下面的,力扣你无敌了

复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* addTwoNumbers(struct ListNode* head1, struct ListNode* head2){
    if(head1->val+head2->val<10&&head1->next==NULL&&head2->next==NULL)
    {
        head1->val=head1->val+head2->val;
        return head1;
    }
     if(head1->val+head2->val==10&&head1->next==NULL&&head2->next==NULL)
    {
        head1->val=0;
        struct ListNode*point3=(struct ListNode*)malloc(sizeof(struct ListNode));
    point3->next=NULL;
    point3->val=1;
    head1->next=point3;
        return head1;
    }
long long count1=0;
long long count2=0;
long long arr1[1000];
long long arr2[1000];
int i=0;
int j=0;
struct ListNode*point1=head1;
struct ListNode*point2=head2;
while(point1)
{
    arr1[i]=point1->val;
    i++;
    point1=point1->next;
}
while(point2)
{
    arr2[j]=point2->val;
    j++;
    point2=point2->next;
}
long good=1;
long bad=1;
for(int x=0;x<i;x++)
{
    count1=count1+good*arr1[x];
    good=good*10;
}
for(int x=0;x<j;x++)
{
    count2=count2+bad*arr2[x];
    bad=bad*10;
}
long long total=count1+count2;
int t=10;
int a=1;
int z=0;
long arr5[1000];
long count3=total;
while(count3!=0)
{
  arr5[z]=count3%10;
  z++;
  count3=count3/10;
}
free(head1);
head1=(struct ListNode*)malloc(sizeof(struct ListNode)*z);
head1->val=arr5[0];
head1->next=NULL;
struct ListNode*point4=head1;
for(int x=1;x<z;x++)
{
    struct ListNode*point3=(struct ListNode*)malloc(sizeof(struct ListNode));
    point3->next=NULL;
    point3->val=arr5[x];
    point4->next=point3;
    point4=point4->next;
}
return head1;
}
相关推荐
the3clipse22 分钟前
H.265熵编码核心:CABAC自适应二进制算术编码详解——如何将语法元素高效压缩为比特流
人工智能·算法·视频编码·h.265·hevc·cabac·cavlc
CQU_JIAKE24 分钟前
10.4【A】
算法
Godspeed Zhao41 分钟前
现代智能雷达技术19——算法(5)
算法
(Charon)42 分钟前
【C++面试】RAII到底是什么:从资源管理理解C++对象生命周期
c++·算法·面试
Omics Pro1 小时前
之江实验室NAR|虚拟细胞3阶段训练范式
数据库·人工智能·算法·机器学习·自然语言处理
Tisfy1 小时前
LeetCode 0678.有效的括号字符串:O(n)+O(1)一次遍历
算法·leetcode·字符串·题解·贪心·括号匹配
小O的算法实验室1 小时前
IEEE TEVC,学习辅助的搜索路径重构进化算法
学习·算法·重构
Liuchang09111 小时前
洛谷 P2670 [NOIP 2015 普及组] 扫雷游戏
c++·算法·游戏
言乐61 小时前
Python体现逻辑回归和决策树的区别
开发语言·python·算法·决策树·逻辑回归
HugoStudio_SWAN1 小时前
洛谷 B4575 [GESP202609 二级] 直角三角形——临场定义理解与边界质疑
c++·学习·程序人生·算法