facebook挂经

小公司可能还有坑

投了好多小公司,没有一家鸟我,请问投小公司有什么技巧吗

你可以说下是哪两道吗?确定是easy的吗?
为啥test case 卡了

我一会来发,现在脑子有点乱,去上课了

紧张容易发挥失常,pat pat 楼主

需要包装好简历,最好有好的工业界项目,有技术含量的buzz word

参考

1 Like

时间线上我觉得不要放弃,我当年4月底才拿到当年暑假的internship offer,找人内推的。不过这也只是个例,不一定有很大参考价值。加油:muscle:

1 Like

怎么题目已经改成挂经了?还没出结果吧

这样就清楚多了。
首先,都不是原题,是变种,难度至少是medium。变种其实难好多的,没法抄。
这样看还是有戏的。而且是做了两题了。
如果第一题没啥问题,第二题仅仅是个test case的话,过的希望还是不小的。

最好多mock几次吧,不然总不能把FB的正式面试拿来练手吧。

1 Like

这题应该不是678, 678 主要是需要处理 *。 * 是个难点。
这道题其实难度下降的,虽然leetcode不一定有原题,思路还是比较好想的。存left parentheses 然后碰到 right parentheses 就 pop 出来 拼掉。

这题虽然leetcode 定义为medium,但其实不难,感觉算 easy。需要处理各种test case倒是真的。

第二题是301, hard,店面也这么难?

哦对,经典题了,很高频的。dfs扫两遍。从左到右,然后从右往左。bfs的不让过的。
这题面FB必须准备到的。感觉标题换了就有点认不出来了, 直接说是 Remove Invalid Parentheses 估计马上反应过来了。

您好,想请问一下,为什么 “(()))sdf”会转变成 “sdf”呀? 不应该是(())sdf吗?ps:祝顺利,加油!

应该是搞错了

ok thx~

这题只要找到一个解,用bfs似乎好一些

public static String balanceParens(String s) {
    StringBuffer res = new StringBuffer();
    int l = 0, r = 0;//num of invalid left and right
    for (char c : s.toCharArray()) {
        l += c == '(' ? 1 : 0;
        if (l == 0) {
            r += c == ')' ? 1 : 0;
        } else {
            l -= c == ')' ? 1 : 0;
        }
    }
    Queue<ParenWraper> q = new LinkedList<>();
    Set<String> used = new HashSet<>();
    q.offer(new ParenWraper(s, l, r));
    while (!q.isEmpty()) {
        ParenWraper cur = q.poll();
        if (isValid(cur.str)) {
            return cur.str;
        }
        for (int i = 0; i < cur.str.length(); i++) {
            if (cur.str.charAt(i) != '(' && cur.str.charAt(i) != ')') continue;
            if (cur.str.charAt(i) == '(' && cur.left > 0) {
                String temp = cur.str.substring(0, i) + cur.str.substring(i + 1);
                if (!used.contains(temp)) {
                    used.add(temp);
                    q.offer(new ParenWraper(temp, cur.left - 1, cur.right));
                }
            }
            if (cur.str.charAt(i) == ')' && cur.right > 0) {
                String temp = cur.str.substring(0, i) + cur.str.substring(i + 1);
                if (!used.contains(temp)) {
                    used.add(temp);
                    q.offer(new ParenWraper(temp, cur.left, cur.right - 1));
                }
            }
        }
    }
    return "";
}

private static boolean isValid(String s) {
    int count = 0;
    for (char c : s.toCharArray()) {
        if (c == '(') count++;
        else if (c == ')') count--;
        if (count < 0) return false;
    }
    return count == 0;
}
1 Like

哦,只要一个解啊,那bfs可行

bfs 的效率还是没有dfs 高的,无论runtime还是space