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

合并k个已排序的链表

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

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param lists ListNode类vector 
     * @return ListNode类
     */
    ListNode* mergeKLists(vector<ListNode*>& lists) 
    {
       ListNode* rhead = nullptr;
       ListNode* rtail = nullptr;
       while(true)
       {
            int minTndex = -1;//让最小位置初始为-1
            int i = lists.size();
            while(i--)
            {
                if(lists[i] != nullptr)//首先判断数组当前位置的节点是否为空
                {
                    if(minTndex == -1)//说明lists中还没有插入数据
                    {
                        minTndex = i;
                    }
                    else if(lists[i]->val < lists[minTndex]->val)
                    {
                        minTndex = i;
                    }
                }
            }
            
            if(minTndex == -1)//如果遍历一遍以后最小位置还是空的, 那么说明数组中所有的位置都是空的
            {
                return rhead;
            }
            if(rhead == nullptr)
            {
                rhead = rtail = lists[minTndex];
            }
            else 
            {
            rtail->next = lists[minTndex];
            rtail = rtail->next;
            }
            lists[minTndex] = lists[minTndex]->next;
       }
    }
};


















全部评论

相关推荐

阿里巴巴各部门年终奖开奖了,有人拿到了220w
真烦好烦真烦:拿命换钱呢,公司给你220万,肯定是因为你对公司的贡献大于220万,想想要多厉害多累才能达到
投递阿里巴巴集团等公司10个岗位 >
点赞 评论 收藏
分享
一天代码十万三:这都不能算简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务