/** Ċ Ġ* Ġhttps :// leetcode . com / problems / merge - k - sorted - lists / submissions / Ċ Ġ*/ Ċ class ĠMerge K Sort edList s Ġ{ ĊĠĠĠ Ġfun Ġmerge K Lists ( list : ĠArray < ListNode ?> ) Ġ: ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . isEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . size Ġ== Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . toList (). reduce Ġ{ Ġagg , Ġlist Node Ġ-> Ġmerge Two Lists ( agg , list Node ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmerge Two Lists ( l 1 : ĠListNode ? Ġ, Ġl 2 : ĠListNode ?) Ġ: ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠListNode () ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Ġ= Ġroot ; ĊĠĠĠĠĠĠĠ Ġvar Ġl 1 Curr Ġ= Ġl 1 ; ĊĠĠĠĠĠĠĠ Ġvar Ġl 2 Curr Ġ= Ġl 2 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( l 1 Curr Ġ!= Ġnull Ġ|| Ġl 2 Curr Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl 1 Curr Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent . next Ġ= ĠListNode ( l 2 Curr !! .` val `); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . next !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl 2 Curr Ġ= Ġl 2 Curr . next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl 2 Curr Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent . next Ġ= ĠListNode ( l 1 Curr .` val `); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . next !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl 1 Curr Ġ= Ġl 1 Curr . next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( l 1 Curr !! .` val ` Ġ> Ġl 2 Curr !! .` val `) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent . next Ġ= ĠListNode ( l 2 Curr .` val `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl 2 Curr Ġ= Ġl 2 Curr . next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent . next Ġ= ĠListNode ( l 1 Curr .` val `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl 1 Curr Ġ= Ġl 1 Curr . next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . next !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġroot . next ĊĠĠĠ Ġ} Ċ }