兩個類似的求最近的數

來源:互聯網
上載者:User

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

http://www.cnblogs.com/haolujun/archive/2012/10/12/2721874.html

這篇文章裡給出了幾種演算法,包括暴力演算法,遍曆每兩個數求出最小值,複雜度為n方

有種比較好的方法,先排序,然後遍曆每一個正數(或者負數),遍曆到一個數,用這個數取負,在符號相反的地區進行二分尋找,尋找最接近的那個數。

我的方法是用hash,將正負數分別散列到一個雜湊表中,負數取絕對值。然後遍曆一個雜湊表的每個元素,到另一個雜湊表對應位置,向兩端遍曆,找到該數最接近的一個數。

這種方法省去了排序的複雜度,但是前後遍曆可能會花費一定時間,可以適當最佳化,比方說前面找到最接近的距離為d那麼下一個數最遠遍曆到距離為d,因為再遠就沒有意義了,這樣一來可以節省一定的時間。

 

一道類似的題目: 如何比較兩個數組得到每個值在另一個數值中的最接近值

1 兩個數組都排序,遍曆一個數組的每個數,對於這個數到另一個數組中進行二分尋找。

2 兩個數組雜湊到兩個雜湊表中,然後對應位置前後掃描。

因此對於距離最近的一維數組的求法,基本上先要使其有序再根據特點進行尋找。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.