题解 | #合并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;
    }
};

全部评论

相关推荐

每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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