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

全部评论

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务