大城怎么样做网站,有创意的电商公司名字大全,外贸网站怎么做外链,客户登记管理系统题目链接#xff1a;https://leetcode-cn.com/problems/add-two-numbers/
给出两个 非空 的链表用来表示两个非负的整数。其中#xff0c;它们各自的位数是按照 逆序 的方式存储的#xff0c;并且它们的每个节点只能存储 一位 数字。
如果#xff0c;我们将这两个数相加起…题目链接https://leetcode-cn.com/problems/add-two-numbers/
给出两个 非空 的链表用来表示两个非负的整数。其中它们各自的位数是按照 逆序 的方式存储的并且它们的每个节点只能存储 一位 数字。
如果我们将这两个数相加起来则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外这两个数都不会以 0 开头。
输入(2 - 4 - 3) (5 - 6 - 4)
输出7 - 0 - 8
原因342 465 807考查单链表反转 /*** 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) {int sum, one 0;ListNode *nextNode NULL;while(l1 ! NULL || l2 ! NULL){if(l1 ! NULL l2 ! NULL){sum l1-val l2-val one;one sum/10;ListNode *newNode new ListNode(sum%10);newNode-next nextNode;nextNode newNode;l1 l1-next;l2 l2-next;}else if(l1 ! NULL l2 NULL){sum l1-val one;one sum/10;ListNode *newNode new ListNode(sum%10);newNode-next nextNode;nextNode newNode;l1 l1-next;}else{sum l2-val one;one sum/10;ListNode *newNode new ListNode(sum%10);newNode-next nextNode;nextNode newNode;l2 l2-next;}}if(one ! 0){ListNode *newNode new ListNode(1);newNode-next nextNode;nextNode newNode;}return reverseList(nextNode);}ListNode* reverseList(ListNode *cur){if(cur-next NULL)return cur;ListNode *prevNode NULL, *nextNode cur-next;while(cur ! NULL cur-next ! NULL){cur-next prevNode;prevNode cur;cur nextNode;nextNode nextNode-next;}cur-next prevNode;return cur;//反转链表后的新的头结点}
};直接对每位进行相加
class Solution { // 2020.10.4
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {int carry 0, sum;ListNode* newhead NULL, *prev NULL;while(l1 || l2 || carry){sum (l1 ? l1-val : 0) (l2 ? l2-val : 0) carry;ListNode* node new ListNode(sum%10);carry sum/10;if(l1)l1 l1-next;if(l2)l2 l2-next;if(!newhead){newhead node;prev node;}else{prev-next node;prev node;}}return newhead;}
};40 ms 69.8 MB