专栏名称: 九章算法
专业的北美IT求职经验分享、技术交流社区,帮助你找到好的IT工作。由硅谷顶尖IT企业工程师维护。提供专业的算法培训/面试咨询,官网 www.jiuzhang.com
目录
相关文章推荐
九章算法  ·  罕见,三连接offer ·  4 天前  
九章算法  ·  当面试官是自己的算法课老师时 ·  6 天前  
九章算法  ·  谷歌被曝滥用H1B,裁员潮或因此终结! ·  1 周前  
九章算法  ·  K.O大厂“原题”的《OOD面向对象圣经》, ... ·  6 天前  
九章算法  ·  这可能是码农最“暴利”的岗位 ·  1 周前  
51好读  ›  专栏  ›  九章算法

Google 面试题 | 二进制手表

九章算法  · 公众号  · 算法  · 2016-12-09 07:55

正文

题目描述


给我们一块表,这个表显示的时间是12小时制,表上显示小时和分钟,且这个表显示的方式是2进制形式(小时4位,分钟6位表示),告诉我们某一时刻表上显示“1”的个数,问我们当前可能的时间有哪些?


样例

Example:

Input: n = 1 

Return: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02",

"0:04", "0:08", "0:16", "0:32"]


解题思路


对于这道题目,首先思考,12小时制的表格,小时是从0~11,分钟是从0~59,这么小的数据我们完全可以预处理出每一种情况下小时或者分钟包含“1”的个数,然后我们分拆num为两块小时和分钟,再枚举下小时和分钟分别占了几个“1”,得到所有的情况。



参考代码


http://www.jiuzhang.com/solutions/binary-watch/



面试官角度分析


能够迅速分析出小数据,能够暴力预处理所有情况,那么本题就可以达到hire程度。


相关LC练习题


http://www.lintcode.com/zh-cn/problem/next-smaller-and-larger-number-with-the-same-1-bits/


想进FLAG实习?九章帮你系统讲解面试算法,解决面试时常见算法问题


以下课程,正在报名中!

《九章算法班》

《算法强化班》

《Java入门与基础算法班》

《Big Data 项目实战班》

第一节免费试听!!

报名网址http://t.cn/RAC7Era, 或猛戳“阅读原文”