📟作者主页:慢热的陕西人
🌴专栏链接:力扣刷题日记
📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言
文章目录
- 牛客热题:链表相加(二)
- 题目链接
- 方法一:反转
- 思路
- 代码
- 复杂度
牛客热题:链表相加(二)
题目链接
链表相加(二)_牛客题霸_牛客网 (nowcoder.com)
方法一:反转
思路
代码
ListNode* ReverseList(ListNode* head){//空链表直接返回和一个节点的情况if(head == nullptr || head->next == nullptr) return head;ListNode* cur = head;ListNode* n = cur->next;ListNode* pre = nullptr;while(cur != nullptr){cur->next = pre;pre = cur;cur = n;if(n != nullptr)n = n->next;}return pre;}ListNode* addInList(ListNode* head1, ListNode* head2) {ListNode* sum = new ListNode(0);ListNode* h1 = ReverseList(head1);ListNode* h2 = ReverseList(head2);ListNode* s = sum;int v = 0;while(h1 != nullptr || h2 != nullptr){v /= 10;if(h1 != nullptr) v += h1->val, h1 = h1->next;if(h2 != nullptr) v += h2->val, h2 = h2->next;s->next = new ListNode(v % 10);s = s->next;}v /= 10;if(v){s->next = new ListNode(v % 10);s = s->next;}sum->next = ReverseList(sum->next);return sum->next;}
复杂度
时间复杂度:O(N), 反转是O(N), 相当于遍历了两次链表
空间复杂度:O(M + N), 创建了一个max(m, n) + 1的链表