leetcode 第2题

      做这道题之前,对链表的知识还给老师了,这道题主要讲的是单链表的操作,val和引用,注意处理val。

      这个代码处理时间是59ms

      参考源码:     https://github.com/cy-hello/leedcode_002

/**
 * 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 l3(0);   
        ListNode *preNode = &l3;  
        int addNumber = 0;  
        ListNode *b1 = l1, *b2 = l2;  
        while(b1!=NULL || b2!=NULL || addNumber>0)//当l1和l2不为空或者addNumber>0任意一个条件成立  
        {  
            ListNode *node = new ListNode(0);//临时的结构体指针  
            int val1 = b1 ? b1->val : 0;//如果b1不为空,val1=b1->val,否则为空  
            int val2 = b2 ? b2->val : 0;//如果b2不为空,val2=b2->val,否则为空  
            b1 = b1 ? b1->next : NULL;//如果b1不为空,b1指向下一个链表节点,否则为空  
            b2 = b2 ? b2->next: NULL;//如果b1不为空,b1指向下一个链表节点,否则为空  
            node->val = (val1 + val2 + addNumber) % 10;  //超过10需要进位
            addNumber = (val1 + val2 + addNumber) / 10;  
            preNode->next = node;  
            preNode = node;  
        }  
        return l3.next;  
    }
};


猜你喜欢

转载自blog.csdn.net/qq_34770510/article/details/78805253