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

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

    Example:

    Input:
    [   1->4->5,   1->3->4,   2->6
    ]
    Output: 1->1->2->3->4->4->5->6
    /**
     * Definition for singly-linked list.
     */
    struct ListNode {
      int val;
      struct ListNode *next;
    };
    
    struct ListNode* mergeKLists(struct ListNode** lists, int listsSize) {
      struct ListNode * head = NULL;
      struct ListNode * p = NULL;
      struct ListNode * q = NULL;
      int i=0;
      int j=0;
      while(1) {
        for(i=0; i<listsSize; i++) {
          if(p == NULL || (lists[i] != NULL && p->val > lists[i]->val)) {
            p = lists[i];
            j = i;
          }
        }
        if(p == NULL) break;
        if(head == NULL) {
          head = p;
          q = p;
          p = NULL;
          lists[j] = lists[j]->next;
          continue;
        }
        q->next = p;
        q = q->next;
        p = NULL;
        lists[j] = lists[j]->next;
      }
      return head;
    }

    坑爹,在判断head == NULL的代码块中忘了移向下一个节点,导致lists[j]->next就是lists[j]。

  • 相关阅读:
    2020软件工程作业00
    2020软件工程作业03
    2020软件工程作业02
    软件工程作业01
    2020软件工程作业06
    2020软件工程作业05
    问题清单
    2020软件工程作业04
    2020软件工程作业02
    2020软件工程作业1
  • 原文地址:https://www.cnblogs.com/tuhooo/p/9055033.html
Copyright © 2011-2022 走看看