一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1111|回复: 7
收起左侧

Fb店面

[复制链接] |试试Instant~ |关注本帖
ziyaoliu 发表于 2016-10-23 11:30:38 | 显示全部楼层 |阅读模式

2016(10-12月) 码农类 硕士 全职@Facebook - 内推 - 技术电面 |Otherfresh grad应届毕业生

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
第一轮店面 西雅图的fb一个面试官 上来介绍了一下 写add  binary  LC67 我着急给他写 他却不让我写  让我说思路 我说翻转一下相加 他让我想想不翻转的方法 我说转成int 加完再转回去。。。。 脑抽了。。。 他问这个方法有啥缺点 我说不直接 后来又补上说可能越界。。。 之后我继续说 可以直接从后往前加 这样不用翻转。。 终于让我写了 写完之后没什么bug
面试官又问 你把这个改成位操作。。。 当时就凌乱了一下  我给他写了一下把% 和 / 改成位操作的写法 之后他又说 不是 不能用+ - * /之类的 全部写成位操作 然后就一直纠结在这。。感觉写一个被否定一个 感觉这个面试官心中有一个标准答案 我一直没踩到 最后草草了事 感觉整个过程我很急着写代码 有点着急 免得不好 希望二面能发挥的好点。。。

评分

3

查看全部评分

 楼主| ziyaoliu 发表于 2016-10-24 02:27:44 | 显示全部楼层
iPhD 发表于 2016-10-23 12:11
这题的输入是两个String还是int?
. from: 1point3acres.com/bbs
位操作是指要用LC 371那个方法?

输入是两个string
我觉得面试官可能想要的是这个 不过我也不大确定
  1. public class Solution {-google 1point3acres
  2.     public String addBinary(String a, String b) {
  3.         if(a == null || a.length() == 0) {
  4.             return b;. Waral 鍗氬鏈夋洿澶氭枃绔,
  5.         }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  6.         if(b == null || b.length() == 0) {
  7.             return a;
  8.         }
  9.         
  10.         int i = a.length() - 1;
  11.         int j = b.length() - 1;. 1point3acres.com/bbs
  12.         int carry = 0;
  13.         StringBuilder res = new StringBuilder();
  14.         while(i >= 0 || j >= 0) {. Waral 鍗氬鏈夋洿澶氭枃绔,
  15.             int aI = i >= 0 ? (a.charAt(i) - '0') : 0;
  16.             int bI = j >= 0 ? (b.charAt(j) - '0') : 0;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  17.             . from: 1point3acres.com/bbs
  18.             int curr = aI ^ bI ^ carry;
  19.             carry = (aI & bI) | (aI & carry) | (bI & carry);
  20.             i--;
  21.             j--;. from: 1point3acres.com/bbs
  22.             res = res.append(curr);
  23.         }
    . 鍥磋鎴戜滑@1point 3 acres
  24.         
  25.         if(carry != 0) {. 1point 3acres 璁哄潧
  26.             res.append(carry);. Waral 鍗氬鏈夋洿澶氭枃绔,
  27.         }. Waral 鍗氬鏈夋洿澶氭枃绔,
  28.         return res.reverse().toString();
  29.     }
  30. }
复制代码

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

weii 发表于 2016-10-23 11:58:14 | 显示全部楼层
可能是用bitwise做每一位,然后再判断进位这样?
想请教下LZ,翻转那个方法是什么呀?感觉很新没做过诶。。

补充内容 (2016-10-23 12:04):
再仔细看了下不给用加减法,那可能是列个表然后用A、B还有进位的逻辑,来表达下一个进位以及结果了
回复 支持 反对

使用道具 举报

iPhD 发表于 2016-10-23 12:11:51 | 显示全部楼层
这题的输入是两个String还是int?
. 1point 3acres 璁哄潧
位操作是指要用LC 371那个方法?
回复 支持 反对

使用道具 举报

wtcupup 发表于 2016-10-23 12:34:54 | 显示全部楼层
  1. public int addition(int a, int b)
  2.     {
  3.         if(b==0)
  4.         {
  5.             return a;
  6.         }
  7.         else
  8.         {. 1point 3acres 璁哄潧
  9.              sum = a^b;
  10.              carry = (a&b)<<1;
  11.             return addition(sum,carry);         
  12.         }
  13.     }
复制代码
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!

想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
回复 支持 反对

使用道具 举报

leixiang5 发表于 2016-10-23 12:44:15 | 显示全部楼层
楼主最初的思路(翻转)是什么意思?  110 + 011    翻转变成 011 + 110?..   
位操作:
num1 & 1 应该可以给你last digit...得到2个dits之后...xor一下...就是加法...and 一下..是carry.~
回复 支持 反对

使用道具 举报

 楼主| ziyaoliu 发表于 2016-10-24 02:29:27 | 显示全部楼层
leixiang5 发表于 2016-10-23 12:44
楼主最初的思路(翻转)是什么意思?  110 + 011    翻转变成 011 + 110?..   
位操作:
num1 & 1 应该可以 ...
. 鍥磋鎴戜滑@1point 3 acres
对的 翻转一下直接从左往右加
不太清楚面试官要的到底是啥 可能是这种
  1. public class Solution {
  2.     public String addBinary(String a, String b) {
  3.         if(a == null || a.length() == 0) {
  4.             return b;
  5.         }
  6.         if(b == null || b.length() == 0) {
  7.             return a;
  8.         }
  9.         
  10.         int i = a.length() - 1;
  11.         int j = b.length() - 1;
  12.         int carry = 0;
  13.         StringBuilder res = new StringBuilder();
  14.         while(i >= 0 || j >= 0) {
  15.             int aI = i >= 0 ? (a.charAt(i) - '0') : 0;
  16.             int bI = j >= 0 ? (b.charAt(j) - '0') : 0;
  17.             
    .1point3acres缃
  18.             int curr = aI ^ bI ^ carry;
  19.             carry = (aI & bI) | (aI & carry) | (bI & carry);
  20.             i--;
  21.             j--;
  22.             res = res.append(curr);
  23.         }
  24.         
  25.         if(carry != 0) {
  26.             res.append(carry);
  27.         }
  28.         return res.reverse().toString();.鐣欏璁哄潧-涓浜-涓夊垎鍦
  29.     }
  30. }
复制代码

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

leixiang5 发表于 2016-10-24 02:59:48 | 显示全部楼层
ziyaoliu 发表于 2016-10-24 02:29. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
对的 翻转一下直接从左往右加
不太清楚面试官要的到底是啥 可能是这种

嗯。应该就是这种
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-9 12:12

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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