騰訊 合併K個排序鍊錶

2021-08-30 04:22:32 字數 2251 閱讀 1039

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。

示例:

輸入:[

1->4->5,

1->3->4,

2->6

]輸出:1->1->2->3->4->4->5->6

class solution 

}collections.sort(list);

for(int x:list)

return result.next;

}}

找尋出k個鍊錶中的最小節點,並將其從k個鍊錶集中剔除,再將其新增到新的鍊錶中,直到k個鍊錶都為空為止。

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution }}

if(min_val == integer.max_value)

break;

point.next = new listnode(min_val);

point = point.next;

lists[position] = lists[position].next;

}return result.next;

}}

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

}while(!q.isempty())

}return result.next;

}private static comparatorvalcomparator = new comparator()

};}

本次題目是「合併k個排序鍊錶」,其實我們可以從題目合併兩個有序鍊錶中獲得靈感,將k個鍊錶兩兩合併(merge lists onr by one),得到最終結果。

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution else

}public listnode mergeklists(listnode lists)

return head.next;

}}

將k個鍊錶分成兩兩一組,使用方法:合併兩個有序鍊錶,將其合併,再將結果兩兩分組,合併,直到得到最終結果。

class solution 

};class solution

}l.sort();

for(list::iterator it = l.begin(); it!=l.end(); it++)

return result->next;

}};

方法二:

listnode* mergeklists(vector&lists)}}

if(min_val==int_max)

break;

point->next = new listnode(min_val);

point = point->next;

lists[position] = lists[position]->next;

}return result->next;

}

class mycompare

};class solution

return head->next;

}};

listnode* mergetwolists(listnode* l1, listnode* l2)

else

}listnode* mergeklists(vector&lists)

listnode* mergetwolists(listnode* l1, listnode* l2)

else

}listnode* mergeklists(vector&lists)

interval*=2;

}return lists[0];

}

騰訊 合併K個排序鍊錶

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6class solution collections.sort list for int x list return result.next 找尋出...

leetcode 騰訊 合併K個排序鍊錶

原題 合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 class listnode def init self,x self.val x self.next none def mergetwol...

合併k個排序鍊錶

合併k個排序鍊錶,並且返回合併後的排序鍊錶。嘗試分析和描述其複雜度。樣例 給出3個排序鍊錶 2 4 null,null,1 null 返回 1 2 4 null 兩兩合併 合併ab得到c 合併cd得到e definition for listnode.public class listnode pu...