LeetCode445——Add Two Numbers II(两个链表数据相加(从链表尾部开始),返回新链表)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode445——Add Two Numbers II(两个链表数据相加(从链表尾部开始),返回新链表)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目:
參考解法:
/*** 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) {vector<int> nums1, nums2;//定義兩個(gè)向量while(l1) {//入棧nums1.push_back(l1->val);l1 = l1->next;}while(l2) {nums2.push_back(l2->val);l2 = l2->next;}int m = nums1.size(), n = nums2.size();int sum = 0, carry = 0;ListNode *head = nullptr, *p = nullptr;//這里沒(méi)有建立頭結(jié)點(diǎn),只有頭指針for(int i = m - 1, j = n - 1; i >= 0 || j >= 0 || carry > 0; i--, j--) {sum = carry;if(i >= 0)//這里兩個(gè)判斷,也隱含處理了長(zhǎng)短不一的問(wèn)題 sum += nums1[i];if(j >= 0)sum += nums2[j];carry = sum / 10;p = new ListNode(sum%10);p->next = head;head = p;}return head;} };分析:
這里是從尾巴開(kāi)始從右到左相加的,那么我們可以把數(shù)據(jù)先入棧,然后分別出棧,得到的相加結(jié)果,存儲(chǔ)到新節(jié)點(diǎn)。
注意的是循環(huán)中的判斷條件的書(shū)寫(xiě)。
注意這里的頭插法,是因?yàn)樽詈筝敵鍪且绱恕?/p>
總結(jié)
以上是生活随笔為你收集整理的LeetCode445——Add Two Numbers II(两个链表数据相加(从链表尾部开始),返回新链表)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 自学Java怎么入门
- 下一篇: 网易云音乐灰色歌曲在线听的方法