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

给Google onsite面经添砖加瓦

 
全局:
yxyxyx 发表于 2016-10-16 23:35
不是啊,我的算法仍然是4啊
111,000,000,011 (+1) -> 111,000,000,100 (往右进两位)-> 001,110,000,001 ...

你的思路跟我挺像的,不過你用+1 -1來說明,我想很難讓大家看懂。這題的關鍵在於可以用+1把多個1,ˊ轉化成兩個1。假設你有一個數是111...1 (n個1),原本的表示法需要用n個2^x來表示,但是+1之後,數字變成了1000...0 (1個1後面帶n個0),只需要1個2^x表示,加上你要把多加的1 (2^0) 扣回去,所以原數字可以用兩個2^x表示。-1並不是很必要,反正right shift都會被吃掉。

思路:
一開始count = 0
看least significant bit
->是0忽略
->是1的話,count++,然後往左看有無連續1 (實際上看左邊一位就行)
    ->左邊是1,+1讓他進位
    ->左邊是0忽略
往右shift一個bit,重複上述步驟ˋ直到number變成0

實際上遇到1個1就count++,為什麼呢?假如這個1是單獨的,那麼我們必定要用一個2^x表示它。假如是連續的,那麼如上面所說,我們可以用+1進位後,用兩個2^x來表示,這邊count++是先算你多加的1 (2^0),另外一個1因為被你進位跑去左邊了,所以之後遇到他會是單獨的1,到時候你還是會算到他,所以總共是兩個1。
回复

使用道具 举报

🔗
null_point_exc 2016-10-17 03:04:28 | 只看该作者
全局:
楼主加油啊。看描述免得不错
回复

使用道具 举报

🔗
ytsr 2016-10-17 03:26:02 | 只看该作者
全局:
yxyxyx 发表于 2016-10-17 00:01
恩。暴力算是一种算法。其实我感觉也可以数学算出来。下面写一下算法,不知道正确与否。。。

比如一开 ...

你电面过了吗?啥时候直播啊?
回复

使用道具 举报

🔗
yxyxyx 2016-10-17 04:16:54 | 只看该作者
全局:
ytsr 发表于 2016-10-16 15:26
你电面过了吗?啥时候直播啊?

lol要哭了
回复

使用道具 举报

🔗
Jailf 2016-10-17 09:31:02 | 只看该作者
全局:
楼主有结果了吗?
回复

使用道具 举报

🔗
jy_121 2016-10-17 11:30:32 | 只看该作者
全局:
请问下楼主吃药片这两问的时间复杂度都是怎么回答的?谢谢
回复

使用道具 举报

🔗
cheeroh 2016-10-17 11:47:52 | 只看该作者
全局:
第一题,这样对不对
对每一位 如果是0,dp[i] = dp[i-1] ;如果是1, dp[i]  = min(dp[i-1]+1, num of 1, 2+num of 0)
回复

使用道具 举报

🔗
wcyz666 2016-10-17 12:00:10 | 只看该作者
全局:
目测遇到了同一个国人姐姐。我当时做2^n的题的时候她给的提示是化成一棵二叉树,左子树是比它小的最大的2的幂,右边是比他大的最小的2次幂
回复

使用道具 举报

🔗
 楼主| 猫头鹰也是猫 2016-10-17 21:56:25 | 只看该作者
全局:
wcyz666 发表于 2016-10-17 12:00
目测遇到了同一个国人姐姐。我当时做2^n的题的时候她给的提示是化成一棵二叉树,左子树是比它小的最大的2的 ...

其实我也是这么做的。。。沾一下大神的仙气!
回复

使用道具 举报

🔗
 楼主| 猫头鹰也是猫 2016-10-17 21:58:57 | 只看该作者
全局:
jy_121 发表于 2016-10-17 11:30
请问下楼主吃药片这两问的时间复杂度都是怎么回答的?谢谢

第一问没问,第二问n^2
回复

使用道具 举报

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

本版积分规则

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