package Ġle e code Ċ Ċ import Ġlist node . ListNode Ċ import Ġlist node . create ListNode By Array Ċ Ċ /* Ċ åĲĪå¹¶ Ġk Ġä¸ª æİĴåºı éĵ¾è¡¨ ï¼Į è¿ĶåĽŀ åĲĪå¹¶ åĲİçļĦ æİĴåºı éĵ¾è¡¨ ãĢĤ è¯· åĪĨæŀĲ åĴĮ æııè¿° ç®Ĺæ³ķ çļĦ å¤įæĿĤ åº¦ ãĢĤ Ċ Ċ ç¤ºä¾ĭ : Ċ Ċ è¾ĵåħ¥ : Ċ [ Ċ 1 -> 4 -> 5 , Ċ 1 -> 3 -> 4 , Ċ 2 -> 6 Ċ ] Ċ è¾ĵåĩº : Ġ 1 -> 1 -> 2 -> 3 -> 4 -> 4 -> 5 -> 6 */ Ċ /** Ċ Ġ* ĠExample : Ċ Ġ* Ġvar Ġli Ġ= ĠListNode ( 5 ) Ċ Ġ* Ġvar Ġv Ġ= Ġli .` val ` Ċ Ġ* ĠDefinition Ġfor Ġsing ly - linked Ġlist . Ċ Ġ* Ġclass ĠListNode ( var Ġ` val `: ĠInt ) Ġ{ Ċ Ġ* ĠĠĠĠ Ġvar Ġnext : ĠListNode ? Ġ= Ġnull Ċ Ġ* Ġ} Ċ Ġ*/ Ċ class ĠSolution 2 3 Ġ{ ĊĠĠĠ Ġfun Ġmerge K Lists ( lists : ĠArray < ListNode ?> ): ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( lists Ġ== Ġnull Ġ|| Ġlists . isEmpty ()) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( lists . size Ġ== Ġ 1 ) Ġreturn Ġlists [ 0 ] ĊĠĠĠĠĠĠĠ Ġif Ġ( lists . size Ġ== Ġ 2 ) Ġreturn Ġmerge Two Lists ( lists [ 0 ], Ġlists [ 1 ]) ĊĠĠĠĠĠĠĠ Ġval Ġmid Ġ= Ġlists . size Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġlist _ start Ġ= Ġlists . copyOf Range ( 0 , Ġmid ) ĊĠĠĠĠĠĠĠ Ġval Ġlist _ end Ġ= Ġlists . copyOf Range ( mid , Ġlists . size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmerge Two Lists ( merge K Lists ( list _ start ), Ġmerge K Lists ( list _ end )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmerge Two Lists ( l 1 : ĠListNode ?, Ġl 2 : ĠListNode ?): ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( l 1 Ġ== Ġnull ) Ġreturn Ġl 2 ĊĠĠĠĠĠĠĠ Ġif Ġ( l 2 Ġ== Ġnull ) Ġreturn Ġl 1 ĊĠĠĠĠĠĠĠ Ġvar Ġhead : ĠListNode ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( l 1 .` val ` Ġ<= Ġl 2 .` val `) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= Ġl 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġmerge Two Lists ( l 1 . next , Ġl 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= Ġl 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġmerge Two Lists ( l 1 , Ġl 2 . next ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġhead ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġl 1 Ġ= Ġcreate ListNode By Array ( 1 , Ġ 4 , Ġ 5 ) ĊĠĠĠ Ġval Ġl 2 Ġ= Ġcreate ListNode By Array ( 1 , Ġ 3 , Ġ 4 ) ĊĠĠĠ Ġval Ġl 3 Ġ= Ġcreate ListNode By Array ( 2 , Ġ 6 ) ĊĠĠĠ Ġval Ġhead Ġ= ĠSolution 2 3 (). merge K Lists ( array Of ( l 1 , Ġl 2 , Ġl 3 )) ĊĠĠĠ Ġprintln ( head ) Ċ }