zoukankan      html  css  js  c++  java
  • leetcode23 合并k个排序链表

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* mergeKLists(vector<ListNode*>& lists) {
            // time O(nk) space O(1) k为lists宽度
            int len=lists.size();
            int flag=len;
            ListNode *ahead,*pre,*cur;
            pre=new ListNode(-1);ahead=pre;
            while(flag){
                cur=NULL;
                int k;//记录最小值的下标
                //循环取每个当前值的最小值,当前值的序列如果由lists[i]变成最小堆,那么可以优化time
                for(int i=0;i<len;i++){
                    if(cur==NULL){
                        cur=lists[i];k=i;
                    }else if(lists[i]!=NULL && cur->val>lists[i]->val){
                        cur=lists[i];k=i;
                    }
                }
                if(cur==NULL) break;//处理异常情况:当所有为空的时候
                pre->next=cur;
                pre=cur;
                if(lists[k]!=NULL) lists[k]=lists[k]->next;
                if(lists[k]==NULL) flag--;
            }
            return ahead->next;
        }
    };

  • 相关阅读:
    深度可分离卷积、分组卷积、空洞卷积、转置卷积
    Batch Normalization
    激活函数
    容器————vector
    39XML文档类
    38初识xml
    37QT程序打包
    36可视化操作数据库
    35使用模型操作数据库
    34sqlite
  • 原文地址:https://www.cnblogs.com/joelwang/p/11017091.html
Copyright © 2011-2022 走看看