题解 | #合并k个已排序的链表#

合并k个已排序的链表

https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
#include <climits>
class Solution {
public:
    ListNode *mergeKLists(vector<ListNode *> &lists) {
        auto head=new ListNode(0);//新建头结点
        auto cur=head;
        int linesNum=lists.size();
        int minNum;
        int minlist;
        while(1)
        {
            minNum=INT_MAX;//由于要找最小值,初始化为最大值
            for(int i=0;i<linesNum;i++)//找最小值
            {
                if(lists[i]!=nullptr&&lists[i]->val<minNum)
                {
                    minNum=lists[i]->val;//记录最小值
                    minlist=i;//记录最小值所在输入链表
                }
            }
            if(minNum==INT_MAX)break; //找不到最小值,即lists内指针都为nullptr,没有剩余
            cur->next=lists[minlist];//最小值加入输出链表
            lists[minlist]=lists[minlist]->next;//最小值去除输入链表
            cur=cur->next;//输出链表后移
        }
        return head->next;
    }
};

全部评论

相关推荐

09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务