题解 | #两个链表生成相加链表#

两个链表生成相加链表

http://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

先反转链表,在逐位相加

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head1 ListNode类 
     * @param head2 ListNode类 
     * @return ListNode类
     */
    ListNode* reverse(ListNode* head) {  // 反转链表
        ListNode* nex = nullptr;
        while (head != nullptr) {
            ListNode* tmp = head->next;
            head->next = nex;
            nex = head;
            head = tmp;
        }
        return nex;
    }

    ListNode* addInList(ListNode* head1, ListNode* head2) {
        // write code here
        ListNode* newHead1 = reverse(head1);  // 反转链表
        ListNode* newHead2 = reverse(head2);  // 反转链表
        ListNode *cur = new ListNode(0);
        int sum = 0;
        while(newHead1 && newHead2) {
            sum = newHead1->val + newHead2->val + cur->val;
            cur->val = sum/10;
            ListNode *ans = new ListNode(sum%10);
            ListNode *cn = cur->next;
            cur->next = ans;
            ans->next = cn;
            newHead1 = newHead1->next;
            newHead2 = newHead2->next;
        }
        while(newHead1) {
            sum = newHead1->val + cur->val;
            cur->val = sum/10;
            ListNode *ans = new ListNode(sum%10);
            ListNode *cn = cur->next;
            cur->next = ans;
            ans->next = cn;
            newHead1 = newHead1->next;
        }
        while(newHead2) {
            sum = newHead2->val + cur->val;
            cur->val = sum/10;
            ListNode *ans = new ListNode(sum%10);
            ListNode *cn = cur->next;
            cur->next = ans;
            ans->next = cn;
            newHead2 = newHead2->next;
        }
        return cur->val ? cur : cur->next;
    }
};
全部评论

相关推荐

昨天 15:58
江西农业大学 C++
听说很多OD都是进了存储部门,这OD在华为存储发展咋样?有没有了解的
被晒没的咸鱼:从业界角度来说,其实华为存储很赚钱,而且ai发展存储刚需大,还有很高的上升空间;但是历史原因导致内部官僚主义严重
投递华为等公司10个岗位 > 华为存储OD事变
点赞 评论 收藏
分享
02-28 17:01
门头沟学院 C++
俊朗的铁猫希望被捞:兄弟如果只想搞钱的话,你这个简历最适合的其实是辅导机构做dai写啥的真的特别赚
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务