给定的链表是倒序的 MDZZ………………我还自己写了半天反转链表,才发现不对…………
然后后来又是各种报错,发现自己写麻烦了,总共先定义两个指针,一个作为头,一个往后走就可以了…………
AC1.0
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
/*** ListNode *head1;
head1->next=l1;
ListNode *now=l1;
while(now->next!=NULL)
{
post=now->next;
now->next=post->next;
post->next=head1->next;
head1->next=post;
}
ListNode *head2;
head2->next=l2;
ListNode *now=l2;
while(now->next!=NULL)
{
post=now->next;
now->next=post->next;
post->next=head1->next;
head1->next=post;
}丑陋的白写了的反转链表***/
ListNode *now=new ListNode(-1);
ListNode *ans=now;
int tot=0;
bool flag=0;
while(l1!=NULL||l2!=NULL)
{
if(l1!=NULL)
{
tot+=l1->val;
l1=l1->next;
}
if(l2!=NULL)
{
tot+=l2->val;
l2=l2->next;
}
now->next=new ListNode(tot%10);
now=now->next;
tot=tot/10;
}
if(tot>0)
{
now->next=new ListNode(tot);
now=now->next;
}
return ans->next;
}
};
AC2.0
精简版…………自己差的太多了………………哎…………每天进步一点点吧
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *now=new ListNode(-1);
ListNode *ans=now;
int tot=0;
while(l1||l2||tot)
{
int sum=tot+(l1?l1->val:0)+(l2?l2->val:0);
now->next=new ListNode(sum%10);
now=now->next;
tot=sum/10;
l1=l1?l1->next:l1;
l2=l2?l2->next:l2;
}
return ans->next;
}
};
就记得这个题前一阵做过嘛……
tmpNext.next=ListNode(s%10)
tmpNext=tmpNext.next
写的时候还是没想起来
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
ans=ListNode(0)
tmpNext=ans
res=0
v1=l1.val
v2=l2.val
while(l1 or l2 or res):
s=v1+v2+res
res=s/10
tmpNext.next=ListNode(s%10)
tmpNext=tmpNext.next
l1=l1.next if l1 else l1
l2=l2.next if l2 else l2
v1=l1.val if l1 else 0
v2=l2.val if l2 else 0
return ans.next
python用的越来越顺手了QAQ 主要还是刷题需要的语法少
那四个if else想合并 发现还不如这么写行数少
这种写法还是在工程代码中看到的呢