美国卖车经历分享

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货

最近看过此主题的会员

H1B/绿卡遥遥无期
又不想回国
来东南亚最大的互联网集团工作?
码农求职神器Triplebyte:
不用海投
内推多家公司面试
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
查看: 3612|回复: 36
收起左侧

fb phone希望印度姐姐手下留情

[复制链接] |试试Instant~ |关注本帖
我的人缘0
smiliy宝儿 发表于 2017-10-31 05:58:54 | 显示全部楼层 |阅读模式
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】

2017(10-12月) 码农类General 硕士 全职@Facebook - 网上海投 - 技术电面  | Other | fresh grad应届毕业生

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

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

x
刚面完fb的phone interviewlc 301 remove invalid parentheses 的变形,remove最少的parentheses使它valid,只返回一个解即可。
比如:"(a))" -> "(a)"-google 1point3acres
         "((()"  -> "()"

开始用的BFS,follow up是要linear time,  用了两个for loop解,再follow up是只用一个for loop。最后一个follow up没想出来,求地里有大神给个solution

发面经攒人品
. 1point 3acres 论坛


.留学论坛-一亩-三分地

上一篇:巨硬OCI校园面筋
下一篇:blend面经

本帖被以下淘专辑推荐:

我的人缘0
watercup 发表于 2017-11-8 11:28:54 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
发个java的解法,只扫描一遍,用stack存储invalid括号的位置,最后把invalid的括号删除就可以了

public String removeInvalid(String input) {
        Stack<Integer> stack = new Stack<Integer>();

        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            if (c == '(') {. From 1point 3acres bbs
                stack.push(i);-google 1point3acres
            } else if (c == ')') {
                if (stack.isEmpty() || input.charAt(stack.peek()) != '(') {
. visit 1point3acres for more.                    stack.push(i);
                } else {. 留学申请论坛-一亩三分地
                    stack.pop();
                }
            }. 围观我们@1point 3 acres
        }.留学论坛-一亩-三分地

        StringBuilder sb = new StringBuilder(input);
        while (!stack.isEmpty()) {
            sb.deleteCharAt(stack.pop());
        }

        return sb.toString();
    }

评分

参与人数 1大米 +3 收起 理由
zhang123587 + 3 给你点个赞!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

我的人缘0
clfhaha1234 发表于 2017-11-1 15:02:27 | 显示全部楼层
  此人我要顶:
 
25% (6) 【我投】
  此人我要踩:
 
75% (21) 【我投】
建一个缓存buff解决问题,遇到括号前存入缓存,遇到“(”括号就缓存入栈,遇到“)”就取出栈顶加上左右括号然后更新缓存,最后拼接在一起就好了. 留学申请论坛-一亩三分地
   
def removeInvalidParentheses(self, s):
        a = []
        cnt = 0
        buf = ""
        for c in s:
            if c!="(" and c!=")":
                buf+=c
            if c=="(":.1point3acres网
                if cnt>=len(a):
                    a.append(buf)
. 一亩-三分-地,独家发布                else:. visit 1point3acres for more.
                    a[cnt] = buf
                buf = ''
                cnt += 1. 1point 3acres 论坛
            if c==")":. 1point3acres
                if cnt != 0:
                    buf = a[cnt-1] + '('+buf+')'
                    cnt -= 1
        return ''.join(a[0:cnt]) + buf

评分

参与人数 2大米 +8 收起 理由
jingjingfly + 5 给你点个赞!
smiliy宝儿 + 3 给你点个赞!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

我的人缘0
robustcoffee 发表于 2018-1-9 17:53:28 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
觉得用stack 的方法 比较clean。或者,这么写也行。

    String removeParentheses(String input, char[] p) {. 牛人云集,一亩三分地
        int l =0;
        StringBuilder sb = new StringBuilder();.本文原创自1point3acres论坛
        for (int i =0; i<input.length(); i++) {. 围观我们@1point 3 acres
            if (input.charAt(i) == p[0]) {
                l++;. 留学申请论坛-一亩三分地
            } else if (input.charAt(i) == p[1]) {. more info on 1point3acres
                l--;
            }. 牛人云集,一亩三分地
            if (l<0) {
                l++;
            } else {
                sb.append(input.charAt(i));
            }
        }. more info on 1point3acres
        if (l != 0) {
            return new StringBuilder(removeParentheses(sb.reverse().toString(), new char[]{')', '('})).reverse().toString();
        }
        return sb.toString();. from: 1point3acres
    }
回复 支持 1 反对 0

使用道具 举报

我的人缘0
mmymichael 发表于 2017-10-31 14:21:43 | 显示全部楼层
  此人我要顶:
 
53% (16) 【我投】
  此人我要踩:
 
47% (14) 【我投】
beibeixhb 发表于 2017-10-31 06:44. Waral 博客有更多文章,
LZ面的SDE么?这似乎是FB 的tag下面hard的题,电面就是hard?

兄弟泥面脸书还期盼拿到ez德玛?
回复 支持 1 反对 0

使用道具 举报

我的人缘0
beibeixhb 发表于 2017-10-31 06:44:56 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
LZ面的SDE么?这似乎是FB 的tag下面hard的题,电面就是hard?
回复 支持 1 反对 0

使用道具 举报

我的人缘0
zmy1101 发表于 2017-10-31 06:34:40 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
想问问LZ两个for loop思路是怎么解的?
如果用一个count统计左括号的个数,如果出现左括号就+1,出现右括号就-1. from: 1point3acres
如果count = 0,还有右括号出现就删去这个右括号,如果走完count != 0,就从后往前删count个左括号? 不知道左括号太多的方法处理对不对
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| smiliy宝儿 发表于 2017-10-31 06:45:11 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
zmy1101 发表于 2017-10-31 06:34
想问问LZ两个for loop思路是怎么解的?
如果用一个count统计左括号的个数,如果出现左括号就+1,出现右括 ...

两个for loop就是从左到右去除不合法的左括号,然后从右到左去除不合法的右括号。
你说的这个不能保证都合法吧
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| smiliy宝儿 发表于 2017-10-31 06:47:34 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
beibeixhb 发表于 2017-10-31 06:44. 留学申请论坛-一亩三分地
LZ面的SDE么?这似乎是FB 的tag下面hard的题,电面就是hard?

这个题其实不是很难。
我是enterprise engineer, 偏full stack, 也算SDE一种吧?不清楚
回复 支持 反对

使用道具 举报

我的人缘0
raychainmah 发表于 2017-10-31 07:06:20 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
可不可以一个在一个for loop里一个下标递增一个递减, 不过还是扫了2遍. from: 1point3acres

  1. def getvalidparentheses(s):
  2.     n = len(s)
  3.     left_count, right_count = 0, 0
  4.     left_ret, right_ret = '', ''
  5.     for i in xrange(n):
  6.         if s[i] == '(':
  7.             left_count += 1
  8.             left_ret += '('. 一亩-三分-地,独家发布
  9.         elif s[i] == ')':. 1point 3acres 论坛
  10.             if left_count > 0:
  11.                 left_count -= 1
  12.                 left_ret += ')'
  13.         else:
  14.             left_ret += s[i]
  15.         if s[-(i+1)] == ')':
  16.             right_count += 1
  17.             right_ret = ')' + right_ret
  18.         elif s[-(i+1)] == '(':
  19.             if right_count > 0:
  20.                 right_count -= 1
  21.                 right_ret = '(' + right_ret
  22.         else:
  23.             right_ret = s[-(i+1)] + right_ret
  24.     return left_ret if len(left_ret) < len(right_ret) else right_ret
复制代码

评分

参与人数 1大米 +3 收起 理由
smiliy宝儿 + 3 很有用的信息!

查看全部评分

回复 支持 反对

使用道具 举报

我的人缘0
yzkst06100 发表于 2017-10-31 07:29:56 | 显示全部楼层
  此人我要顶:
 
100% (2) 【我投】
  此人我要踩:
 
0% (0) 【我投】
第一,我们不知道具体要 删除多少个 ,开括号, 闭括号。所以这题一分为二, 先删闭括号, 保证这一轮结束 所有剩下的闭括号,y有 对应的开括号可以match O(n). visit 1point3acres for more.
然后用同样的算法套路 开括号。O(n);

一共O(2n)


-google 1point3acres
补充内容 (2017-10-31 07:35):
所以是不存在 一个 for loop 的one pass?
. 一亩-三分-地,独家发布
补充内容 (2017-10-31 07:35):
除非用map存index
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| smiliy宝儿 发表于 2017-10-31 07:46:59 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
yzkst06100 发表于 2017-10-31 07:29
第一,我们不知道具体要 删除多少个 ,开括号, 闭括号。所以这题一分为二, 先删闭括号, 保证这一轮结束  ...

对的,我后来用的这个O(2n)的办法。但是没想到O(n)的,写得太慢了,时间不够了
回复 支持 反对

使用道具 举报

我的人缘0
raychainmah 发表于 2017-10-31 07:52:31 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
raychainmah 发表于 2017-10-31 07:06
可不可以一个在一个for loop里一个下标递增一个递减, 不过还是扫了2遍

错了。。。请忽略
回复 支持 反对

使用道具 举报

我的人缘0
yzkst06100 发表于 2017-10-31 08:25:22 | 显示全部楼层
  此人我要顶:
 
100% (2) 【我投】
  此人我要踩:
 
0% (0) 【我投】
smiliy宝儿 发表于 2017-10-31 07:46. 留学申请论坛-一亩三分地
对的,我后来用的这个O(2n)的办法。但是没想到O(n)的,写得太慢了,时间不够了

楼主就一题吗?这个2n应该也可以过啊
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| smiliy宝儿 发表于 2017-10-31 08:37:35 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
yzkst06100 发表于 2017-10-31 08:25
楼主就一题吗?这个2n应该也可以过啊

就一道题。。应该是我写的太慢了
回复 支持 反对

使用道具 举报

我的人缘0
Corey_Lancer 发表于 2017-10-31 09:51:16 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
一个forloop的想不出来啊。。有人解答下么
回复 支持 反对

使用道具 举报

我的人缘0
yzkst06100 发表于 2017-10-31 10:38:40 | 显示全部楼层
  此人我要顶:
 
100% (2) 【我投】
  此人我要踩:
 
0% (0) 【我投】
Corey_Lancer 发表于 2017-10-31 09:51
一个forloop的想不出来啊。。有人解答下么

问了不少人,大家都想不出。。。
回复 支持 反对

使用道具 举报

我的人缘0
fledgling 发表于 2017-10-31 12:06:03 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
smiliy宝儿 发表于 2017-10-31 06:45
两个for loop就是从左到右去除不合法的左括号,然后从右到左去除不合法的右括号。
你说的这个不能保证都 ...

两个for loop就是从左到右去除不合法的右括号,然后从右到左去除不合法的左括号

赞楼主,very clean solution
回复 支持 反对

使用道具 举报

我的人缘0
LuckyGemini 发表于 2017-10-31 12:51:02 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
楼主你投了简历多久他们联系你的呀
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| smiliy宝儿 发表于 2017-10-31 12:59:46 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
LuckyGemini 发表于 2017-10-31 12:51
楼主你投了简历多久他们联系你的呀

我没有投简历,HR联系我的。
不过话说社招果然比较难
回复 支持 反对

使用道具 举报

我的人缘0
cocaptainco 发表于 2017-10-31 13:54:40 | 显示全部楼层
  此人我要顶:
 
0% (0) 【我投】
  此人我要踩:
 
100% (5) 【我投】
一个for loop无非就是index换一下吧。s(i)是从左到右, s(n-1-i)就是从右到左
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| smiliy宝儿 发表于 2017-10-31 14:08:21 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
cocaptainco 发表于 2017-10-31 13:54
一个for loop无非就是index换一下吧。s(i)是从左到右, s(n-1-i)就是从右到左

. 1point 3acres 论坛不是吧。。。
不能同时判断左或者有括号哪些invalid
回复 支持 反对

使用道具 举报

我的人缘0
cocaptainco 发表于 2017-10-31 14:20:10 | 显示全部楼层
  此人我要顶:
 
0% (0) 【我投】
  此人我要踩:
 
100% (5) 【我投】
确实是,一个for loop可以知道要删哪些index,但还得要一个for loop 构建string。 但是如果inplace 构建 string就没办法一个for loop做
回复 支持 反对

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-6-21 18:41

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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