package Ġcom . leetcode Ċ Ċ // Ġhttps :// leetcode . com / problems / combin ation - sum / Ċ class ĠP 3 9 Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcombinations Ġ= Ġmutable ListOf < List < Int >>() ĊĊĠĠĠ Ġfun Ġcombination Sum ( candidates : ĠInt Array , Ġtarget : ĠInt ): ĠList < List < Int >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpool Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġdfs ( candidates , Ġ 0 , Ġtarget , Ġpool ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcombinations ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdfs ( candidates : ĠInt Array , Ġi : ĠInt , Ġtarget : ĠInt , Ġpool : ĠMutable List < Int >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( target Ġ< Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( target Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcombinations Ġ+= Ġpool . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġk Ġ= Ġi ĊĠĠĠĠĠĠĠ Ġwhile Ġ( k Ġ< Ġcandidates . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġcandidates [ k ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpool Ġ+= Ġn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdfs ( candidates , Ġk , Ġtarget Ġ- Ġn , Ġpool ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpool . remove At ( pool . last Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ