题解 | 链表相加(一)

链表相加(一)

https://www.nowcoder.com/practice/521d83306d964c1188639033eb59621d

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param l1 ListNode类 
     * @param l2 ListNode类 
     * @return ListNode类
     */
    ListNode* ListAdd(ListNode* l1, ListNode* l2) {
        ListNode dummy(0);
        ListNode *curr = &dummy;

        int carry = 0;
        while(carry || l1 || l2){
            int val1 = l1? l1->val: 0;
            int val2 = l2? l2->val: 0;
            int value = val1 + val2 +carry;

            carry = value/10;   //加int 表示循环内局部变量,一轮循环结束即销毁
            value = value%10;   //在循环内部声明了一个和外部同名的变量,内部变量会“遮蔽”外部变量,循环体内优先使用内部变量,外部变量不会被修改。

            curr->next = new ListNode(value);

            curr = curr->next;
            l1 = l1 ? l1->next: nullptr;   //更新处理的位
            l2 = l2 ? l2->next: nullptr;
        }

        return dummy.next;
    }
};

全部评论

相关推荐

醉蟀:你不干有的是人干
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务