亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

合并k個排序鏈表

2019-11-14 09:46:57
字體:
來源:轉載
供稿:網友

分治法。 這道題我是先用自己的方法做了出來,花費了很多時間,調試了很多次。最后和網上的解法對比了一下,發現自己的合并兩個鏈表的函數太繁雜,包含太多if else,典型的初學者思維,代碼不簡潔還容易出錯。所以網友的方法是在是值得學習,建議記下來,這是公式化的合并雙鏈表法。

我的C++代碼:

/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */class Solution {public: /** * @param lists: a list of ListNode * @return: The head of one sorted list. */ ListNode *mergeKLists(vector<ListNode *> &lists) { int len = lists.size(); if (len == 0) { return NULL; } return mLists(lists,0,len-1); } ListNode *mLists(vector<ListNode*> &lists, int left, int right) { if (left == right) { return lists[left]; } if (right - left == 1) { return merge(lists[left],lists[right]); } ListNode * temp1 = mLists(lists,left,(left+right)/2); ListNode * temp2 = mLists(lists,(left+right)/2+1, right); return merge(temp1, temp2); } ListNode *merge(ListNode* l, ListNode *r) { ListNode * root = NULL,*temp=NULL; if (l==NULL && r==NULL) { return root; } if (l==NULL) { temp = new ListNode(r->val); root = temp; r = r->next; } else if (r == NULL) { temp = new ListNode(l->val); root = temp; l=l->next; } else if (l->val > r->val) { temp = new ListNode(r->val); r= r->next; root = temp; } else { temp = new ListNode(l->val); l = l->next; root = temp; } while(l!=NULL || r!=NULL) { if (l==NULL) { while (r!=NULL) { temp->next = new ListNode(r->val); r = r->next; temp = temp->next; } }else if (r==NULL) { while (l!=NULL) { temp->next = new ListNode(l->val); l = l->next; temp = temp->next; } } else if (l->val > r->val) { temp->next = new ListNode(r->val); r= r->next; temp = temp->next; } else { temp->next = new ListNode(l->val); l = l->next; temp = temp->next; } } return root; }};

網友的C++代碼,他用了自底向上的迭代(我的是遞歸):

class Solution {public: ListNode *mergeKLists(vector<ListNode *> &lists) { if (lists.size() == 0) return NULL; int n = lists.size(); while (n > 1) { int k = (n + 1) / 2; for (int i = 0; i < n / 2; ++i) { lists[i] = mergeTwoLists(lists[i], lists[i + k]); } n = k; } return lists[0]; } ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *head = new ListNode(-1); ListNode *cur = head; while (l1 && l2) { if (l1->val < l2->val) { cur->next = l1; l1 = l1->next; } else { cur->next = l2; l2 = l2->next; } cur = cur->next; } if (l1) cur->next = l1; if (l2) cur->next = l2; return head->next; }};

除了上面的合并方法,其他合并雙鏈表的方法:

1.

class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1) return l2; if (!l2) return l1; if (l1->val < l2->val) { l1->next = mergeTwoLists(l1->next, l2); return l1; } else { l2->next = mergeTwoLists(l1, l2->next); return l2; } }};

2.

class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1) return l2; if (!l2) return l1; ListNode *head = l1->val < l2->val ? l1 : l2; ListNode *nonhead = l1->val < l2->val ? l2 : l1; head->next = mergeTwoLists(head->next, nonhead); return head; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品第一页| 欧美风情在线观看| 久久久久日韩精品久久久男男| 欧美猛交ⅹxxx乱大交视频| 亚洲免费电影一区| 91高清视频免费观看| 91影院在线免费观看视频| 久久久久国色av免费观看性色| 成人精品久久久| 国产一区二区三区三区在线观看| 国产91精品不卡视频| 亚洲欧美国产va在线影院| 精品国内亚洲在观看18黄| 国产精品久久久久久久久男| 欧美精品在线视频观看| 亚洲欧美国产一本综合首页| 日本不卡视频在线播放| 国产视频福利一区| 777国产偷窥盗摄精品视频| 日韩av免费一区| 欧美日韩国产成人高清视频| xvideos亚洲人网站| 久久人人看视频| 91免费看国产| 亚洲电影中文字幕| 欧美三级免费观看| 久久精品视频一| 成人免费激情视频| 91沈先生作品| 欧美国产精品va在线观看| 国产激情综合五月久久| 欧美在线一区二区三区四| 久久电影一区二区| 亚洲欧美国产一本综合首页| 久久久综合免费视频| 国产精品久久久久av| 日韩一区二区三区国产| 国产精品亚洲精品| 91国产一区在线| 久久免费精品视频| 亚洲精品第一页| 亚洲丝袜在线视频| 国产午夜一区二区| 日韩精品一二三四区| 国产精品成久久久久三级| 午夜精品理论片| 国产精品久在线观看| 亚洲深夜福利视频| 成人自拍性视频| 日本精品一区二区三区在线| 久久99青青精品免费观看| 国产91色在线| 日韩视频―中文字幕| 91网站在线免费观看| 在线观看国产精品淫| 欧美极品欧美精品欧美视频| 97视频免费观看| 国产精品一区av| 深夜福利一区二区| 国产一区二区动漫| 久久久久久这里只有精品| 日韩视频免费观看| 日韩免费av片在线观看| 精品色蜜蜜精品视频在线观看| 久久九九精品99国产精品| 在线成人中文字幕| 欧美在线视频导航| 97超碰国产精品女人人人爽| 久久伊人免费视频| 国产精品电影网站| 欧美中文在线字幕| 奇米成人av国产一区二区三区| 成人免费高清完整版在线观看| 国产v综合ⅴ日韩v欧美大片| 亚洲另类图片色| 国产欧美日韩精品在线观看| 国产精品成人免费视频| 欧美一区二区三区图| 精品美女永久免费视频| 中文字幕日韩在线视频| 日韩电影中文字幕在线| 欧美午夜视频在线观看| 97久久精品人人澡人人爽缅北| 成人性生交大片免费观看嘿嘿视频| 国产一区二区在线免费视频| 欧美日本国产在线| 精品偷拍各种wc美女嘘嘘| 亚洲精品网站在线播放gif| 成人黄色av播放免费| 欧美日本中文字幕| 久久精品久久久久电影| 亚洲精品白浆高清久久久久久| 日韩成人在线网站| 成人在线精品视频| 亚洲欧美国产视频| 国产精品中文在线| 亚洲视频网站在线观看| 国产欧美精品久久久| 8x海外华人永久免费日韩内陆视频| 久久久亚洲福利精品午夜| 国产在线观看91精品一区| 亚洲综合色av| 国产成人精品在线播放| 久久深夜福利免费观看| 不卡av在线网站| 欧美国产乱视频| 国产精品美女久久久免费| 欧美裸体xxxx极品少妇软件| 日韩精品在线视频观看| 亚洲色图色老头| 亚洲成人黄色网| 日韩小视频在线观看| 日本午夜在线亚洲.国产| 51ⅴ精品国产91久久久久久| 欧美精品在线视频观看| 国产日韩av高清| 精品久久久久久久久久ntr影视| 久久久免费精品| 亚洲一区二区在线播放| 欧美裸体视频网站| 亚洲片av在线| 国产精品一区二区女厕厕| 91禁外国网站| 91青草视频久久| 成人av资源在线播放| 国产脚交av在线一区二区| 国产精品情侣自拍| 欧美黑人xxx| 久久久亚洲影院你懂的| 国产97人人超碰caoprom| 日韩黄色在线免费观看| 国产一区二区三区在线| 97超碰国产精品女人人人爽| 精品国产福利视频| 久久99精品久久久久久青青91| 91av在线播放| 欧美怡红院视频一区二区三区| 成人免费xxxxx在线观看| 热久久这里只有| 91免费欧美精品| 国产视频亚洲精品| 亚洲日本欧美中文幕| 综合激情国产一区| 亚洲精品电影久久久| 国产视频精品在线| 91在线国产电影| 91九色视频导航| 国内精品久久久久| 亚洲片av在线| 78m国产成人精品视频| 亚洲综合av影视| 亚洲国产一区二区三区在线观看| 色99之美女主播在线视频| 欧美午夜性色大片在线观看| 2020欧美日韩在线视频| 久久久精品网站| 国产精品亚洲第一区| 欧美国产精品人人做人人爱| 亚洲精品大尺度| 成人免费在线网址| 久久91亚洲精品中文字幕| 亚洲欧美综合区自拍另类| 一二美女精品欧洲| 日韩美女毛茸茸|