package Ġcom . mr xy x . algorithm Ċ Ċ /** Ċ Ġ* Ġ äºĮ åĪĨ æŁ¥æī¾ Ċ Ġ*/ Ċ class ĠBinary Search Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ äºĮ åĪĨ æŁ¥æī¾ ĊĠĠĠĠ Ġ* Ġhttps :// leetcode - cn . com / problems / binary - search / ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbinary Search ( nums : ĠInt Array , Ġtarget : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( nums . isEmpty ()) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvar Ġleft Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġright Ġ= Ġnums . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( left Ġ<= Ġright ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmid Ġ= Ġleft Ġ+ Ġ( right Ġ- Ġleft ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ mid ] Ġ== Ġtarget Ġ-> Ġreturn Ġmid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ mid ] Ġ< Ġtarget Ġ-> Ġleft Ġ= Ġmid Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ mid ] Ġ> Ġtarget Ġ-> Ġright Ġ= Ġmid Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġåľ¨ æİĴåºı æķ°ç»Ħ ä¸Ń æŁ¥æī¾ åħĥç´ł çļĦ ç¬¬ä¸Ģä¸ª åĴĮ æľĢåĲİ ä¸Ģä¸ª ä½įç½® ĊĠĠĠĠ Ġ* Ġhttps :// leetcode - cn . com / problems / find - first - and - last - position - of - element - in - sorted - array / ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsearch Range ( nums : ĠInt Array , Ġtarget : ĠInt ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġint ArrayOf ( left Bound ( nums , Ġtarget ), Ġright Bound ( nums , Ġtarget )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġleft Bound ( nums : ĠInt Array , Ġtarget : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( nums . isEmpty ()) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvar Ġleft Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġright Ġ= Ġnums . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġmid : ĠInt ĊĠĠĠĠĠĠĠ Ġwhile Ġ( left Ġ<= Ġright ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmid Ġ= Ġleft Ġ+ Ġ( right Ġ- Ġleft ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ mid ] Ġ> Ġtarget Ġ|| Ġnums [ mid ] Ġ== Ġtarget Ġ-> Ġright Ġ= Ġmid Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ mid ] Ġ< Ġtarget Ġ-> Ġleft Ġ= Ġmid Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġleft ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġright Bound ( nums : ĠInt Array , Ġtarget : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( nums . isEmpty ()) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvar Ġleft Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġright Ġ= Ġnums . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġmid : ĠInt ĊĠĠĠĠĠĠĠ Ġwhile Ġ( left Ġ<= Ġright ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmid Ġ= Ġleft Ġ+ Ġ( right Ġ- Ġleft ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ mid ] Ġ< Ġtarget Ġ-> Ġleft Ġ= Ġmid Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ mid ] Ġ> Ġtarget Ġ-> Ġright Ġ= Ġmid Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ mid ] Ġ== Ġtarget Ġ-> Ġleft Ġ= Ġmid Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġright ĊĠĠĠ Ġ} Ċ }