package Ġchallenges . aug ust 2 0 2 1 Ċ Ċ /** Ċ Ġ* Ġhttps :// leetcode . com / explore / challenge / card / aug ust - leet coding - challenge - 2 0 2 1 / 6 1 3 / week - 1 - aug ust - 1 st - aug ust - 7 th / 3 8 3 6 / Ċ Ġ*/ Ċ Ċ fun Ġtwo Sum ( nums : ĠInt Array , Ġtarget : ĠInt ): ĠInt Array Ġ{ ĊĠĠĠ Ġif Ġ( nums . size Ġ== Ġ 2 ) Ġreturn Ġint ArrayOf ( 0 , Ġ 1 ) ĊĊĠĠĠ Ġval Ġvalues Map Ġ= Ġnums . fold Indexed ( mutable Map Of < Int , ĠList < Int >> ()) Ġ{ Ġindex , Ġmap , Ġv Ġ-> ĊĠĠĠĠĠĠĠ Ġmap [ v ] Ġ= Ġmap . get OrDefault ( v , Ġempty List ()) Ġ+ Ġindex ĊĠĠĠĠĠĠĠ Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfor Ġ(( value , Ġindexes ) Ġin Ġvalues Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġtarget Ġ- Ġvalue ĊĠĠĠĠĠĠĠ Ġif Ġ( y Ġ== Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( indexes . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġint ArrayOf ( indexes [ 0 ], Ġindexes [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Indexes Ġ= Ġvalues Map [ y ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y Indexes Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġint ArrayOf ( indexes . first (), Ġy Indexes . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġthrow ĠIllegalStateException () Ċ }