leetcode刷题集锦-两数之和

/**

  • Definition for singly-linked list.
  • struct ListNode {
  • int  val;
    
  • struct ListNode *next;
    
  • };
    */
    typedef struct ListNode ListNode;

struct ListNode* addTwoNumbers(ListNode* l, ListNode* s)
{
ListNode* getSizeAndCreateList(int array[]);
printf(“game start,LET US ADD\n”);
ListNode *head;
int a[100];
int i=0;
int j=0;
int temp=0;//记录数组的位置
int n=0;
int index =0;
//数组初始化
for(n=0;n<100;n++)
{a[n]=0;}

while(l!=NULL)
    {
   a[i]=l->val;
   i=i+1;
   l=l->next;
    }
while(s!=NULL)
{
    temp=a[j]+s->val;
    printf("temp = %d\n",temp);
    a[j]=temp;
    index=j;
    while(a[index]>9)
        {
            a[index]=temp%10;
            temp=a[index+1]+temp/10;
            a[index+1]=temp;
            index++;
            }
            j++;
    s=s->next;
}
head=getSizeAndCreateList(a);
return head;

}

ListNode* getSizeAndCreateList(int array[])
{
//头插法创建链表
ListNode *head;
ListNode *s;
ListNode node;
head=NULL;
int i=99;
int j=0;
while(array[i]0)
{
if(i
0)
{
break;
}
else{i=i-1;}
}
printf(“i=%d\n”,i);
for(j;j<=i;i–)
{
s=(ListNode *)malloc(sizeof(ListNode));
node.val=array[i];
s->val=node.val;
s->next=head;
head=s;
}
return head;
}
思路:
1、建立100大小的数组 承载大数超出之后处理
2、接受两个数字求和设置进位,在数组中承载相加之后的数字之和
3、用首插法建立制定链表

猜你喜欢

转载自blog.csdn.net/weixin_35297828/article/details/84581058