回复: 4
跳转到指定楼层
上一主题 下一主题
收起左侧

一个Fail的面经

全局:

2017(7-9月) 码农类General 硕士 全职@dropbox - 网上海投 - 技术电面  | | Fail | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
上周被问到一个计算 某正整数的比特位, 比如 3 有2个 比特位,我给秒了

然后被追问,如果输入是一个byte[] array,长度为n,问如何计算数组里全部的比特
位?我说挨个数,然后自然是 O(8n),但是面试小哥说要更快的算法,也就是降低常数
项8,我想不出来了,请问有啥好办法?

您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
tica, sans-serif">        sum += n;

    }
    cout<<sum<<endl;
}

上一篇:Uber两轮电面都过了,还要跟hiring manager谈
下一篇:Peak6 OA
🔗
WhatsFLAG 2017-9-2 13:01:32 | 只看该作者
全局:
或许可以暴力+记忆来稍微提速,比如算过3,求7可以提速
回复

使用道具 举报

🔗
tonywen2014 2017-9-7 22:56:07 | 只看该作者
全局:
因为byte只有8个比特位, 也就是说只有0-255, 可不可以算出数组里面每个数的个数O(n), 然后再查表得到每个数的比特位个数 * 数的个数, 然后加起来. 因为只有256个数, 所以第二步是constant time. 最后时间复杂度就是就是1 * n
回复

使用道具 举报

🔗
koobecaf 2017-9-9 05:35:45 | 只看该作者
全局:
https://stackoverflow.com/a/25808559/3345261

楼上正解,其实可以把8位拆成4位+4位,然后四位bits一共16种可能性,构造一个长度为16的数组供查询即可。So basically, it's O(n)
回复

使用道具 举报

全局:
楼上的意思是,每个0-255的数,都能通过查表得到它的比特位的数量,然后乘以对应的重复数量?
回复

使用道具 举报

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

本版积分规则

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