Leetcode:Add Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input:(2 -> 4 -> 3) + (5 -> 6 -> 4)

Output:7 -> 0 -> 8

思路:模拟加法。用两个指针分别指向两个链表,进行相加,,用一个变量记录进位情况。如果有链表为空,则处理另一个,直到两个链表都处理完为止。

实现代码:

/** * 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 preHead(0);ListNode *p = &preHead;int carry = 0;while (l1 || l2 || carry) {int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + carry;carry = sum / 10;p->next = new ListNode(sum % 10);p = p->next;l1 = l1 ? l1->next : l1;l2 = l2 ? l2->next : l2;}return preHead.next;}};

如果心胸不似海,又怎能有海一样的事业。

Leetcode:Add Two Numbers

相关文章:

你感兴趣的文章:

标签云: