import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġhttps :// leetcode . com / problems / hand - of - stra ights Ċ Ġ*/ Ċ class ĠHand Of Str a ights Ġ{ ĊĠĠĠ Ġfun Ġis N Str aight Hand ( hand : ĠInt Array , ĠW : ĠInt ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( hand . size Ġ% ĠW Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġhand By Freq Ġ= Ġhand . toList (). grouping By Ġ{ Ġit Ġ}. each Count () ĊĠĠĠĠĠĠĠ Ġval Ġhand By Freq Tree Ġ= ĠTreeMap ( hand By Freq ) ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( hand By Freq Tree . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġhand By Freq Tree . first Key () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hand By Freq Tree [ start ] Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhand By Freq Tree . remove ( start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhand By Freq Tree [ start ] Ġ= Ġhand By Freq Tree [ start ] !! - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurr Size Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast Card Ġ= Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( curr Size Ġ< ĠW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Card Ġ= Ġlast Card + 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hand By Freq Tree [ next Card ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( hand By Freq Tree [ next Card ] Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhand By Freq Tree . remove ( next Card ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhand By Freq Tree [ next Card ] Ġ= Ġhand By Freq Tree [ next Card ] !! - 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Size ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Card Ġ= Ġnext Card ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }