package Ġme . byte beats . algo . kt . design Ċ Ċ class ĠFirst Unique ( nums : ĠInt Array ) Ġ{// time Ġlimitation Ġexception ĊĠĠĠ Ġval Ġvalues Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġval Ġrepeated Values Ġ= Ġsorted Set Of < Int >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġnums . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repeated Values . contains ( nums [ i ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( values . contains ( nums [ i ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . remove ( nums [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeated Values . add ( nums [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . add ( nums [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow First Unique (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( values . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalues . first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( repeated Values . contains ( value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( values . contains ( value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . remove ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeated Values . add ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . add ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }