首页 > 学院 > 开发设计 > 正文

LintCode 104:Merge k Sorted Lists

2019-11-08 00:50:34
字体:
来源:转载
供稿:网友

用了数据库中学的方法。由于每个list都是排好序的,所以就比较每个list开头的数,拿出最小的数push入结果,push完之后扔掉这个数(指针指向下一个数)。循环直至当最小的数为256。(即tmp没有发生改变,没有需要排序的数了)时间复杂为O(vector长度*最长lists)(是NlogN吗,这个不太懂)。

class Solution {public:    /**     * @param lists: a list of ListNode     * @return: The head of one sorted list.     */    ListNode* mergeKLists(vector<ListNode *> &lists ) {        // write your code here        ListNode* head=NULL;        ListNode* last=NULL;        vector<ListNode *>::iterator p,record;        int tmp;        while(1){            tmp=256;            for(p=lists.begin();p<lists.end();p++){                if(!(*p)){                    continue;                }                if((*p)->val<tmp){                    tmp=(*p)->val;                    record=p;                }            }            if(tmp==256)                break;            ListNode*node=new ListNode(tmp);            if(!head){                head=node;                last=node;            }            else{                last->next=node;                last=node;            }            *record=(*record)->next;        }        return head;    }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表