思路很簡單:
如果陣列頭尾,不是一負一正,則可以直接判斷。
如果是一負一正: 直接二分搜尋最小正數。再與前面的那個數比較絕對值。
求遞增陣列中絕對值最小的數
#include
<
cstdio
>
#include
<
cassert
>
//從遞增陣列(允許重複)中找出絕對值最小的數
intbsearch(
const
intarr, size_t len)
if(arr[low]
>
-arr[low -1
]) return
arr[low -1
];return
arr[low];
}int
main()
;const
intsz
=sizeof
(arr)
/sizeof
(arr[
0]);
printf(
"%d\n
", bsearch(arr, sz));
}
遞增陣列中絕對值最小的數
求乙個遞增的整數陣列中,絕對值最小的數。陣列中可以有正負整數和0,要求複雜度 o logn 思路 有序陣列,用二分查詢。如果乙個數大於零,那麼要找的數在他左邊或者是他本身。如果乙個數小於零,那麼要找的數在他右邊或者是他本身。遞迴查詢。public class solution if array en...
如何求陣列中絕對值最小的數?
有乙個公升序排列的陣列,陣列中可能有正數,負數或0,求陣列中元素的絕對值最小的數。例如,陣列 10,5,2,7,15,50 該陣列中絕對值最小的數是2 def fingmin1 array if array none or len array 0 print 輸入引數不合理 return 0 min...
找出有序陣列中絕對值最小的數
假設陣列是從小到大排序,數值可能為負數 0 正數。思路一 可以一次性遍歷一遍,找出絕對值最小值,此時時間複雜度為o n 缺點是沒有利用陣列是有序的這一特點。思路二 陣列有序,可以利用二分查詢的特性。中間的數是正數,往後找 中間的數是負數,往前找。問題的本質是找到正數的最小值,或負數的最大值,分析以下...