package Ġcom . ig or wo j da . list . min sub list length Ċ Ċ // ĠTime Ġcomplexity : ĠO ( n ) Ċ // ĠSpace Ġcomplexity ĠO ( n ) Ċ // ĠUse Ġsl iding Ġwindow Ċ private Ġobject ĠSolution 1 Ġ{ ĊĠĠĠ Ġfun Ġmin Sub List Length ( list : ĠList < Int >, Ġsum : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġstart Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġend Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġmin Len : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( start Ġ< Ġlist . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġcurrent Ġwindow Ġdoesn 't Ġadd Ġup Ġto Ġthe Ġgiven Ġsum Ġthen Ġmove Ġthe Ġwindow Ġto Ġright ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( total Ġ< Ġsum Ġ&& Ġend Ġ< Ġlist . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ+= Ġlist [ end ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġcurrent Ġwindow Ġadds Ġup Ġto Ġat Ġleast Ġthe Ġsum Ġgiven Ġthen Ġwe Ġcan Ġshrink Ġthe Ġwindow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( total Ġ>= Ġsum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Len Ġ= Ġmin ( min Len , Ġend Ġ- Ġstart ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ-= Ġlist [ start ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcurrent Ġtotal Ġless Ġthan Ġrequired Ġtotal Ġbut Ġwe Ġreach Ġthe Ġend , Ġneed Ġthis Ġor Ġelse Ġwe 'll Ġbe Ġin Ġan Ġinfinite Ġloop ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmin Len Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmin ( i 1 : ĠInt ?, Ġi 2 : ĠInt ?): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 Ġ!= Ġnull Ġ&& Ġi 2 Ġ!= Ġnull Ġ-> ĠMath . min ( i 1 , Ġi 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 Ġ!= Ġnull Ġ&& Ġi 2 Ġ== Ġnull Ġ-> Ġi 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 Ġ== Ġnull Ġ&& Ġi 2 Ġ!= Ġnull Ġ-> Ġi 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTime Ġcomplexity : ĠO ( n ^ 2 ) Ċ // ĠLoop Ġthrough Ġall Ġthe Ġelements Ġand Ġthen Ġloop Ġthrough Ġall Ġsub lists Ċ private Ġobject ĠSolution 2 Ġ{ ĊĠĠĠ Ġfun Ġmin Sub List Length ( list : ĠList < Int >, Ġsum : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmin List Length : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġrepeat ( list . size ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsub List Sum Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnum Items Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( index , Ġlist . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġsub List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub List Sum Ġ+= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnum Items ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sub List Sum Ġ>= Ġsum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin List Length Ġ= Ġmin ( min List Length , Ġnum Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmin List Length Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmin ( i 1 : ĠInt ?, Ġi 2 : ĠInt ?): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 Ġ!= Ġnull Ġ&& Ġi 2 Ġ!= Ġnull Ġ-> ĠMath . min ( i 1 , Ġi 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 Ġ!= Ġnull Ġ&& Ġi 2 Ġ== Ġnull Ġ-> Ġi 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 Ġ== Ġnull Ġ&& Ġi 2 Ġ!= Ġnull Ġ-> Ġi 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠK t Lint Will Not Comp lain Ċ