geohash編碼:geohash常用於將二維的經緯度轉換為字串,分為兩步:第一步是經緯度的二進位制編碼,第二步是base32轉碼。
此題考察緯度的二進位制編碼:演算法對緯度[-90, 90]通過二分法進行無限逼近(取決於所需精度,本題精度為6)。注意,本題進行二分法逼近過程中只採用向下取整來進行二分,針對二分中間值屬於右區間。演算法舉例如下: 針對緯度為80進行二進位制編碼過程:
1) 區間[-90, 90]進行二分為[-90, 0),[0, 90],成為左右區間,可以確定80為右區間,標記為1;
2) 針對上一步的右區間[0, 90]進行二分為[0, 45),[45, 90],可以確定80是右區間,標記為1;
3) 針對[45, 90]進行二分為[45, 67),[67,90],可以確定80為右區間,標記為1;
4) 針對[67,90]進行二分為[67, 78),[78,90],可以確定80為右區間,標記為1;
5) 針對[78, 90]進行二分為[78, 84),[84, 90],可以確定80為左區間,標記為0;
6) 針對[78, 84)進行二分為[78, 81), [81, 84),可以確定80為左區間,標記為0;
}注意:
(1)開始用的輸出格式不對,報錯,不知道為什麼不能儲存在動態分配的記憶體裡,再輸出
(2)可以再加一步判斷輸入是不是在-90~90的有效範圍。
牛客網 geohash編碼
geohash編碼 geohash常用於將二維的經緯度轉換為字串,分為兩步 第一步是經緯度的二進位制編碼,第二步是base32轉碼。此題考察緯度的二進位制編碼 演算法對緯度 90,90 通過二分法進行無限逼近 取決於所需精度,本題精度為6 注意,本題進行二分法逼近過程中只採用向下取整來進行二分,針對...
了解geohash編碼,做了個小測試
學習了geohash編碼,把在 90,90 區間的數字通過二分法進行無限逼近,進行編碼。取整採用向下取整 left區間左端點,right區間右端點,num 為要編碼的數,re用來存放編碼結果 輸入 80 輸出 111100 void geohash unsigned int left,unsigne...
騰訊2017秋招筆試程式設計題 geohash編碼
geohash編碼 geohash常用於將二維的經緯度轉換為字串,分為兩步 第一步是經緯度的二進位制編碼,第二步是base32轉碼。此題考察緯度的二進位制編碼 演算法對緯度 90,90 通過二分法進行無限逼近 取決於所需精度,本題精度為6 注意,本題進行二分法逼近過程中只採用向下取整來進行二分,針對...