国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【LeetCode題解】21.Merge Two Sorted Lists

2019-11-06 06:35:37
字體:
供稿:網(wǎng)友

題意為將兩個(gè)已經(jīng)排好序的鏈表合并為一個(gè)新的有序鏈表 可以用遞歸和非遞歸兩種方法解決問題:

(1)非遞歸

首先需要?jiǎng)?chuàng)建一個(gè)新的鏈表,然后依次遍歷兩個(gè)鏈表,并將兩個(gè)數(shù)組中較小的元素依次插入新鏈表中。 值得注意的是,若一個(gè)鏈表為空或已經(jīng)遍歷完全,則將另一個(gè)鏈表插入即可

class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *head = new ListNode(-1); ListNode *p1 = l1; ListNode *p2 = l2; ListNode *curNode = head; while(p1 && p2) { if( p1->val < p2->val ) { curNode->next = p1; curNode = curNode->next; p1 = p1->next; } else if(p2->val < p1->val ) { curNode->next = p2; curNode = curNode->next; p2 = p2->next; } else { curNode->next = p1; curNode = curNode->next; p1 = p1->next; curNode->next = p2; curNode = curNode->next; p2 = p2->next; } } if(p1) { curNode->next = p1; } if(p2) { curNode->next = p2; } return head->next; }};

(2)遞歸

考慮,若鏈表 l1 為空,則返回 l2 鏈表;若 l2 鏈表為空,則返回 l1 鏈表 若兩鏈表均非空,則比較鏈表 l1 和 l2 的第一個(gè)元素,若 l1 較小,則繼續(xù)比較 l1->next 和 l2 的第一個(gè)元素大小,并返回 l1

class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == NULL) { return l2; } if(l2 == NULL) { return l1; } if(l1->val < l2->val) { l1->next = mergeTwoLists(l1->next,l2); return l1; } if(l2->val <= l1->val) { l2->next = mergeTwoLists(l1,l2->next); return l2; } }};
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 峨边| 华安县| 伊宁市| 呼伦贝尔市| 乌拉特前旗| 财经| 库尔勒市| 星座| 贡觉县| 石首市| 永嘉县| 宣恩县| 广河县| 旬邑县| 五家渠市| 平和县| 巢湖市| 乐至县| 郁南县| 苍梧县| 上饶县| 政和县| 赞皇县| 张北县| 汶上县| 泰安市| 兴义市| 晋州市| 社旗县| 达尔| 闵行区| 聊城市| 大余县| 商洛市| 九龙城区| 彩票| 萍乡市| 揭东县| 香河县| 泸西县| 固始县|