geohash编码 (腾讯2017校招开发工程师试卷一)
2017-08-18 17:41
232 查看
题目
分析
代码
此题考察唯独的二进制编码:算法对维度 [-90,90] 通过二分法进行无限逼近(取决于所需精度,本题精度为 6 )。注意,本题进行二分法逼近过程中只采用向下取整来进行二分,针对二分中间值属于右区间。
算法举例如下:
(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] 进行二分为 [89,84),[84,90] ,可以确定 80 位左区间,标记为 0 ;
(6) 针对 [78,84) 进行二分为 [78,81),[81,84) ,可以确定 80 位左区间,标记为 0 ;
已达精度要求,编码为 111100
样本输入: 80
样本输出: 111100
![](http://img.blog.csdn.net/20170818171349931?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlkaWFuY29kZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
输入:
输出:
分析
代码
题目
geohash 编码: geohash 常用于将二维的经纬度转换为字符串,分为两步:第一步是经纬度的二进制编码,第二部是 base32 转码。此题考察唯独的二进制编码:算法对维度 [-90,90] 通过二分法进行无限逼近(取决于所需精度,本题精度为 6 )。注意,本题进行二分法逼近过程中只采用向下取整来进行二分,针对二分中间值属于右区间。
算法举例如下:
(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] 进行二分为 [89,84),[84,90] ,可以确定 80 位左区间,标记为 0 ;
(6) 针对 [78,84) 进行二分为 [78,81),[81,84) ,可以确定 80 位左区间,标记为 0 ;
已达精度要求,编码为 111100
样本输入: 80
样本输出: 111100
分析
这道题目其实是一个折半查找(二分查找)类型的题目, 区别在于, low 和 high在这里初始设定为 low = -90 high=90代码
import java.util.Scanner; public class Main { static int count = 0; public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); binarySearch(n); } public static void binarySearch(int n){ int low=-90, high=90, mid; while(low <= high){ mid = (high + low)/2; if(n >= mid){ System.out.print(1); low = mid; count++; }else{ System.out.print(0); high = mid; count++; } if(count == 6) break; } } }
输入:
80
输出:
111100
相关文章推荐
- 盛大游戏2017校招前端工程师笔试试卷
- [置顶] 美丽联合2018校招前端开发工程师笔试试卷及解析
- 京东2017校招笔试编程题iOS开发工程师
- 2017 搜狗校招c++工程师笔试试卷
- 网易2017校招C++开发工程师(北京)笔试
- 2017阿里后台开发工程师面试经验分享之一面
- Java 2017腾讯校招真题之素数对
- 2017暑假实习生java开发工程师面试(京东)
- 2017去哪儿java开发工程师及编程题答案
- 2017腾讯校招前端面试题
- 2018腾讯校招软件开发岗在线笔试题
- 【机试】2015年腾讯后台开发暑期实习生校招一面
- 网易2017实习生招聘笔试题 C++开发工程师
- 2017腾讯校招编程
- 2017华为校招硬件逻辑工程师
- 腾讯2017秋招笔试编码C++实现
- CSDN日报20170513 ——《腾讯2017校招实习生面试总结》
- 2015年网易校招Java开发工程师(技术架构)在线笔试题(2015年9月20日 18:00—20:00)
- 2015年网易校招Java开发工程师(技术架构)在线笔试题
- 美团——大众测试开发工程师校招