package Ġarrays Ċ Ċ // ĠSup pose Ġyou Ġhave Ġa Ġlong Ġf lower bed Ġin Ġwhich Ġsome Ġof Ġthe Ġplots Ġare Ġpl anted Ġand Ġsome Ġare Ġnot Ċ // ĠHowever , Ġflow ers Ġcannot Ġbe Ġpl anted Ġin Ġadjacent Ġplots Ġ- Ġthey Ġwould Ġcomp ete Ġfor Ġwater Ġand Ġboth Ġwould Ġdie . Ċ // ĠGiven Ġa Ġf lower bed Ġ( represent ed Ġas Ġan Ġarray Ġcontaining Ġb ooleans ), Ġreturn Ġif Ġa Ġgiven Ġnumber Ġof Ċ // Ġnew Ġflow ers Ġcan Ġbe Ġpl anted Ġin Ġit Ġwithout Ġviol ating Ġthe Ġno - adjacent - flow ers Ġrule . Ċ // Ċ // ĠInput : Ġ[ 1 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 0 ] Ċ // Ċ // ĠĠ 3 Ġ=> Ġtrue Ġ( 3 Ġcannot Ġbe Ġpl anted ) Ċ // ĠĠ 4 Ġ=> Ġfalse Ġ( 4 Ġcannot Ġbe Ġpl anted ) Ċ // Ċ // ĠInput : Ġ[ 1 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 0 ] Ċ // Ċ // ĠĠ 1 Ġ=> Ġtrue Ċ // ĠĠ 2 Ġ=> Ġfalse Ċ // Ċ // ĠInput : Ġ[ 0 ] Ċ // Ċ // ĠĠ 1 Ġ=> Ġtrue Ċ // ĠĠ 2 Ġ=> Ġfalse Ċ Ċ class ĠFlow ers Ġ{ ĊĠĠĠ Ġfun Ġcan Place Flow ers ( flower bed : ĠList < Int >, ĠnumberOf New Flow ers : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġnew Flow er bed Ġ= Ġf lower bed . to Mutable List () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnew Flow er bed . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġnew Flow er bed [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ= Ġif Ġ( current Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Previous Value ( i ) Ġ&& Ġhas Next Value ( new Flow er bed , Ġi )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Ġ= Ġnew Flow er bed [ i Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġnew Flow er bed [ i Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Ġ== Ġ 0 Ġ&& Ġnext Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Flow er bed [ i ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Value ( new Flow er bed , Ġi ) Ġ&& Ġnew Flow er bed [ i Ġ+ Ġ 1 ] Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Flow er bed [ i ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( has Previous Value ( i ) Ġ&& Ġnew Flow er bed [ i Ġ- Ġ 1 ] Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Flow er bed [ i ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Flow er bed [ i ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcounter Ġ== ĠnumberOf New Flow ers ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Previous Value ( i : ĠInt ): ĠBoolean Ġ= Ġi Ġ> Ġ 0 ĊĊĠĠĠ Ġprivate Ġfun Ġhas Next Value ( flower bed : ĠList < Int >, Ġi : ĠInt ): ĠBoolean Ġ= Ġi Ġ< Ġf lower bed . size Ġ- Ġ 1 Ċ } Ċ