天天看點

在一個非遞減數組中找到絕對值最小的數字

1、如果都是正數,則是值最小的那個。

2、如果都是負數,則是值最大的那個。

3、如果有整數有負數,則應該找到整數和負數的分界線位置,絕對值最小的數在哪個位置。

參見這裡

其中,在第三個情況裡面,可以使用二分搜尋。

low和high兩個指針,

如果mid跟lowd的符号相同,則low=mid,

如果mid跟high的符号相同,則high=mid,

直到low==high或者low+1==high的時候,

如果low==high了,那麼這個位置就是要傳回的位置,

如果low+1==high了,那麼判斷這兩個位置的絕對值,小的那個就是要傳回位置了。

繼續閱讀