ltx_zero

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

 正常的链表在create和delete用到pre,insert和find不用

posted on 2020-08-13 21:47  ltx_zero  阅读(114)  评论(0编辑  收藏  举报