zoukankan      html  css  js  c++  java
  • LeetCode_ Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
    

      

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
         ListNode *merge(ListNode *head1, ListNode * head2){
            
            if(head1 == NULL) return head2;
            if(head2 == NULL) return head1;
            ListNode *head = new ListNode(2) ;
            ListNode *p, *p1, *p2;
            p = head, p1 = head1, p2 = head2;
            while(p1 != NULL && p2 != NULL){
                if(p1->val < p2->val){
                    p->next = p1;
                    p = p1;
                    p1 = p1->next;
                }else{
                    p->next = p2;
                    p = p2;
                    p2 = p2->next;
                }
            }
            p->next = p1 == NULL ? p2 : p1;
            p = head->next;
            
            delete head;
            return p;
        }
        ListNode *mergeKLists(vector<ListNode *> &lists) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            int n = lists.size();
            if(n < 1) return NULL;
            int len = 1;
            while(len < n){
                for(int i = 0; i + len < n; i += len * 2){
                        lists[i] = merge(lists[i], lists[i+len]);
                }
                len = len<<1;
            }
            return lists[0];
        }
    };

    归并的思路来做。

  • 相关阅读:
    「NOI2017」蔬菜 解题报告
    线性代数
    idea创建maven的web工程
    logback和slf4j的使用之logger使用
    英雄之言 罗隐
    论英雄
    英雄--偶得佳文不知出处
    日志
    延迟加载线程安全的单例--最佳方式,通过内部类
    linux下安装jdk8
  • 原文地址:https://www.cnblogs.com/graph/p/3344642.html
Copyright © 2011-2022 走看看