package Ġcom . daily . algo th rim . leetcode . hard Ċ Ċ import Ġcom . daily . algo th rim . leetcode . ListNode Ċ Ċ /** Ċ Ġ* Ġ 2 3 . Ġ åĲĪå¹¶ K ä¸ª åįĩ åºı éĵ¾è¡¨ Ċ Ġ* Ċ Ġ* Ġ ç»Ļ ä½ł ä¸Ģä¸ª éĵ¾è¡¨ æķ°ç»Ħ ï¼Į æ¯ıä¸ª éĵ¾è¡¨ éĥ½ å·²ç»ı æĮī åįĩ åºı æİĴ åĪĹ ãĢĤ Ċ Ġ* Ġ è¯· ä½ł å°Ĩ æīĢæľī éĵ¾è¡¨ åĲĪå¹¶ åĪ° ä¸Ģä¸ª åįĩ åºı éĵ¾è¡¨ ä¸Ń ï¼Į è¿ĶåĽŀ åĲĪå¹¶ åĲİçļĦ éĵ¾è¡¨ ãĢĤ Ċ Ġ*/ Ċ class ĠMerge K Lists Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMerge K Lists (). merge K Lists ( array Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListNode ( 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= ĠListNode ( 4 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= ĠListNode ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListNode ( 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= ĠListNode ( 3 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= ĠListNode ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListNode ( 2 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= ĠListNode ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ?. print All () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmerge K Lists ( lists : ĠArray < ListNode ?> ): ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( lists . isNull OrEmpty ()) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġsort ( 0 , Ġlists . size Ġ- Ġ 1 , Ġlists ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsort ( l : ĠInt , Ġr : ĠInt , Ġlists : ĠArray < ListNode ?> ): ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( l Ġ== Ġr ) Ġreturn Ġlists [ l ] ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġl Ġ+ Ġ( r Ġ- Ġl ). shr ( 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmerge ( sort ( l , Ġm , Ġlists ), Ġsort ( m Ġ+ Ġ 1 , Ġr , Ġlists )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmerge ( l 1 : ĠListNode ?, Ġl 2 : ĠListNode ?): ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠListNode (- 1 ) ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠListNode ? Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġvar Ġleft Ġ= Ġl 1 ĊĠĠĠĠĠĠĠ Ġvar Ġright Ġ= Ġl 2 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( left Ġ!= Ġnull Ġ&& Ġright Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( left .` val ` Ġ<= Ġright .` val `) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp ?. next Ġ= Ġleft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġleft . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp ?. next Ġ= Ġright ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġright . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġtemp ?. next ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( left Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp ?. next Ġ= Ġleft ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( right Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp ?. next Ġ= Ġright ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult . next ĊĠĠĠ Ġ} Ċ }