📣 独立日限时特惠: VIP通行证立减$68
楼主: sherry900105
跳转到指定楼层
上一主题 下一主题
收起左侧

Amazon GrayCheck 那道题的时间复杂度讨论

🔗
xiaoxin213 2015-2-22 08:17:17 | 只看该作者
全局:
为啥要while循环?(x & (x - 1))不就是在检查是否只有一个1么??

我觉得是这样:
if(x != 0) return (x & (x - 1)) == 0 ? true :false;
else return false;
回复

使用道具 举报

🔗
 楼主| sherry900105 2015-2-22 08:46:04 | 只看该作者
全局:
xiaoxin213 发表于 2015-2-22 08:17
为啥要while循环?(x & (x - 1))不就是在检查是否只有一个1么??

我觉得是这样:

据说是因为case过不了才要加个while..我也觉得不需要while啊。。= =
回复

使用道具 举报

🔗
xiaoxin213 2015-2-22 11:46:04 | 只看该作者
全局:
sherry900105 发表于 2015-2-22 08:46
据说是因为case过不了才要加个while..我也觉得不需要while啊。。= =

哪个case??
回复

使用道具 举报

🔗
 楼主| sherry900105 2015-2-23 00:19:13 | 只看该作者
全局:

不知道啊。。我又没做过oa。。是地里小伙伴说的~
回复

使用道具 举报

🔗
Larrylianj 2015-2-25 13:34:31 | 只看该作者
全局:
不是text case过不了, x & (x-1) 目的是去除最右边一个1。那个算法的思想是不断去除最右边的1看是否为0,这个算法只有在 答案是正确的时候(是gray code)才会比查遍8位累计1的个数的时间复杂度要少。
回复

使用道具 举报

🔗
 楼主| sherry900105 2015-2-26 01:16:11 | 只看该作者
全局:
Larrylianj 发表于 2015-2-25 13:34
不是text case过不了, x & (x-1) 目的是去除最右边一个1。那个算法的思想是不断去除最右边的1看是否为0, ...

我看题目的意思是只需要check是不是互为格雷码啊。。要是超过一个1不就不是了么。。还用继续check么。。。
回复

使用道具 举报

🔗
LUOLUOLNSH 2015-3-6 11:43:02 | 只看该作者
全局:
楼主 想问问在地里哪里看到答案 能share下帖子吗?多谢啦~~
回复

使用道具 举报

🔗
xjwun 2015-3-6 11:45:51 | 只看该作者
全局:
Larrylianj 发表于 2015-2-25 13:34
不是text case过不了, x & (x-1) 目的是去除最右边一个1。那个算法的思想是不断去除最右边的1看是否为0, ...

但是只有八位,所以还是O(1) ?谢谢!
回复

使用道具 举报

全局:
这题不是O(1)么,循环走8次,然后计算bit也是计算八次,怎么是O(n)呢
回复

使用道具 举报

🔗
lchen77 2015-3-6 18:04:50 | 只看该作者
全局:
话说我怎么觉得用while 循环时, 应该是   
while (res_ox)
36          {
37             if (res_ox & 0x1) count_one++;
38             res_ox = res_ox >> 1;
39          }
这样才是一位一位比较吧?复杂度 O(n), n 是位数,不是数字的太小。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表