1. 程式人生 > >和最接近0的兩個數

和最接近0的兩個數

舉例 mil 絕對值 www. 取絕對值 ive bsp 題目 得到

  題目描述:有n個數的數組,找出這個數組中的兩個數,使得這兩個數的和最接近0。

  步驟:

  1 數組元素從小到大排序。

  2 設置兩個遊標,一個指向第一個數,另一個指向最後一個數。

  3 把兩個遊標指向的數相加取絕對值,與當前得到的最小值比較,更小則記錄。比較兩個遊標指向的數的絕對值,移動絕對值較大者對應的遊標(如果是左側遊標,則向右移動;否則右側遊標向左移動)。重復當前步驟,直到和是0或者兩個遊標相遇。

  舉例:

原始序列:

-2 3 4 -7 9 5

排序後:

-7 -2 3 4 5 9

尋找過程:

res = MAX_INF;

-7 -2 3 4 5 9
|           |         res = 2

-7 -2 3 4 5 9
|         |           res = 2

-7 -2 3 4 5 9
    |     |           res = 2

-7 -2 3 4 5 9
    |   |             res = 2

-7 -2 3 4 5 9
    | |               res = 1

-7 -2 3 4 5 9
    |                 res = 1

  參考資料

  有N個數的數組,找出這個數組中的兩個數,使得這兩個數的和最接近0

和最接近0的兩個數