天天看點

搜狗2016校園招聘之算法程式設計解析

1、第一個題:最近鄰居

題目:

搜狗2016校園招聘之算法程式設計解析

解題思路:

1)這個題如果用java,相對會好解一些,因為可以直接用JDK中的Point2D類,來定義坐标系空間中的一個點。

2)簡單思路:暴力破解,計算任意兩個點之間的距離,時間負責度為O(n^2);

3)優化思路:《程式設計之美》上給出了一個思路,利用分治法,将所有點所在的平面切成點數大緻相同的兩半,分為Left,Right,則距離最近的兩個點,要麼在Left區域中,要麼在Right區域中,要麼在跨兩者中間的區域中,時間複雜度可以優化到O(nlgn)。下面給出暴力破解的C++實作。

考察:二維平面求距離,庫函數的應用,算法優化。

2、第二個題:混亂還原

搜狗2016校園招聘之算法程式設計解析

1)利用僞随機特性,隻要時間種子一樣且上限一樣,都會産生相同的随機數;

2)保證打亂的序列能被還原,則需要一個額外的棧來儲存随機數,把打亂所使用的随機數出棧與對應的元素進行交換就可以恢複。

考察:随機數的應用,棧的應用。

繼續閱讀