1、第一個題:最近鄰居
題目:

解題思路:
1)這個題如果用java,相對會好解一些,因為可以直接用JDK中的Point2D類,來定義坐标系空間中的一個點。
2)簡單思路:暴力破解,計算任意兩個點之間的距離,時間負責度為O(n^2);
3)優化思路:《程式設計之美》上給出了一個思路,利用分治法,将所有點所在的平面切成點數大緻相同的兩半,分為Left,Right,則距離最近的兩個點,要麼在Left區域中,要麼在Right區域中,要麼在跨兩者中間的區域中,時間複雜度可以優化到O(nlgn)。下面給出暴力破解的C++實作。
考察:二維平面求距離,庫函數的應用,算法優化。
2、第二個題:混亂還原
1)利用僞随機特性,隻要時間種子一樣且上限一樣,都會産生相同的随機數;
2)保證打亂的序列能被還原,則需要一個額外的棧來儲存随機數,把打亂所使用的随機數出棧與對應的元素進行交換就可以恢複。
考察:随機數的應用,棧的應用。