package Ġdp . getMax Len Ċ Ċ // https :// leetcode - cn . com / problems / maximum - length - of - sub array - with - positive - product / Ċ class ĠSolution Kt Ġ{ ĊĊĠĠĠ Ġfun ĠgetMax Len ( nums : ĠInt Array ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpositive Ġ= ĠInt Array ( nums . size ) Ġ{ Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnegative Ġ= ĠInt Array ( nums . size ) Ġ{ Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( nums [ 0 ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive [ 0 ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( nums [ 0 ] Ġ< Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative [ 0 ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġpositive [ 0 ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġnums . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nums [ i ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive [ i ] Ġ= Ġpositive [ i - 1 ] Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative [ i ] Ġ= Ġif ( negative [ i - 1 ] Ġ> Ġ 0 ) Ġnegative [ i - 1 ] Ġ+ Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( nums [ i ] Ġ< Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive [ i ] Ġ= Ġif ( negative [ i - 1 ] Ġ> Ġ 0 ) Ġnegative [ i - 1 ] Ġ+ Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative [ i ] Ġ= Ġif ( positive [ i - 1 ] Ġ> Ġ 0 ) Ġpositive [ i - 1 ] Ġ+ Ġ 1 Ġelse Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠMath . max ( result , Ġpositive [ i ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }