在一个非递减数组中找到绝对值最小的数字

来源:互联网 发布:小米开了数据不能上网 编辑:程序博客网 时间:2024/06/06 03:13

1、如果都是正数,则是值最小的那个。

2、如果都是负数,则是值最大的那个。

3、如果有整数有负数,则应该找到整数和负数的分界线位置,绝对值最小的数在哪个位置。

参见这里

其中,在第三个情况里面,可以使用二分搜索。

low和high两个指针,

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

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

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

如果low==high了,那么这个位置就是要返回的位置,

如果low+1==high了,那么判断这两个位置的绝对值,小的那个就是要返回位置了。