leetcode no.2 两数相加
链表问题,题目没难度,问题都在链表
- 注意每一次都是要ListNode*temp=new Listnode(0)[如果不在leetcode里面的时候就自己写new node],这时候要用pre->next=temp,先指定temp是谁的next再给他new是无效的
- 俩表都没了还可能会有进位符
- 返回的是ans->next
/** * 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*ans=new ListNode(0); ListNode*pre=ans; ListNode*temp=ans->next; ListNode*temp1=l1; ListNode*temp2=l2; int tempnum=0; while(temp1!=NULL && temp2!=NULL) { temp=new ListNode(0); temp->val=(temp1->val+temp2->val+tempnum)%10; tempnum=(temp1->val+temp2->val+tempnum)/10; pre->next=temp; temp=temp->next; pre=pre->next; temp1=temp1->next; temp2=temp2->next; } while(temp1!=NULL) { temp=new ListNode(0); temp->val=(temp1->val+tempnum)%10; tempnum=(temp1->val+tempnum)/10; pre->next=temp; pre=pre->next; temp=temp->next; temp1=temp1->next; } while(temp2!=NULL) { temp=new ListNode(0); temp->val=(temp2->val+tempnum)%10; tempnum=(temp2->val+tempnum)/10; pre->next=temp; pre=pre->next; temp=temp->next; temp2=temp2->next; } if(tempnum) { temp=new ListNode(0); temp->val=tempnum; pre->next=temp; } return ans->next; } };
正常的链表在create和delete用到pre,insert和find不用
时间才能证明一切,选好了就尽力去做吧!