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

狗家油管上门面经

 
🔗
szyyn95 2018-8-20 21:27:28 | 只看该作者
全局:
atlantic7200 发表于 2018-8-20 17:26
@szyyn95, 第四轮, "面试官是不是想问最少用多少个拼出来呢,那就和地里一个店面题很像" 请问你还记得是 ...

自己搜一下,谷歌的店面题,至少有二十条讨论我记得,就是八月份的,那么多积分呢不用白不用

评分

参与人数 1大米 +5 收起 理由
atlantic7200 + 5 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
atlantic7200 2018-8-21 01:04:34 | 只看该作者
全局:
szyyn95 发表于 2018-8-20 21:27
自己搜一下,谷歌的店面题,至少有二十条讨论我记得,就是八月份的,那么多积分呢不用白不用

感谢提示, 是不是这篇, 这篇的楼主最后过了, 貌似这题面试官只要求O(m*n) http://www.1point3acres.com/bbs/thread-437474-1-1. html

补充内容 (2018-8-21 01:11):
http://www.1point3acres.com/bbs/thread-437474-1-1.html

补充内容 (2018-8-21 01:56):
再補充一下, 應該用類似szyyn95提出的這個做法就可以了.
http://www.1point3acres.com/bbs/ ... p;page=3#pid4380320

补充内容 (2018-8-21 06:41):
刚才又想了一下, szyyn95的做法好像也是O(m*n, m = len(A), n = len(B)). pop掉那些已经小于当前index的值+更新queue的worst case还是O(m*n) ; eg: A="CCCCCC"对上B="ABCA", 那对每个'C'都要O(n)的时间去reset
回复

使用道具 举报

🔗
szyyn95 2018-8-21 07:56:39 | 只看该作者
全局:
atlantic7200 发表于 2018-8-21 01:04
感谢提示, 是不是这篇, 这篇的楼主最后过了, 貌似这题面试官只要求O(m*n) http://www.1point3acres.com/b ...

我在那个贴子里提到的那个pop list in dict的做法其实是错的,原因在于如果你只检查每个list的最后一个(下一个被pop的val),会遇到一个edge case:假设现在a在dict里的list是[7,3],现在的index是6,实际上list里的7是可以的,但是由于3并没有被pop掉,导致你误认为需要再来开始一个新的String。

评分

参与人数 1大米 +5 收起 理由
atlantic7200 + 5 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
edu 2018-8-25 14:19:44 | 只看该作者
全局:

对于选择去 Mt View 还是去 San Bruno 面, 楼主有什么推荐吗?
回复

使用道具 举报

🔗
fropen 2018-8-26 01:44:52 | 只看该作者
全局:
第四轮:先建Trie,O(M^2),再循环O(N),总 O(N + M^2).
class TrieNode {
    char lable;
    TrieNode father;
    HashMap<Character, TrieNode> children = new HashMap<>();
    public TrieNode(char c, TrieNode f) {
        label = c;
        father = f;
        if (f != null) {
            f.children.put(c, this);
        }
    }
    public TrieNode() {
        this('#', null);
    }
}

TrieNode buildTrie(String str) {
    TrieNode root = new TrieNode();
    char[] cs = str.toCharArray();
    TrieNode node = root;
    for (int i = 0; i < cs.length; i++) {
        TrieNode n = new TrieNode(cs[i], node);
        node = node.father;
        while (node != null) {
            if (node.children.containsKey(cs[i])) {
                break;
             }
             node.children.put(cs[i], n);
             node = node.parent;
         }
         node = n;
     }
}

TrieNode getNode(TrieNode node, char c) {
    if (node == null) return null;
    return node.get(c);
}

int minCount(String dst, String src) {
    TrieNode root = buildTrie(src);
    int count = 0;
    TrieNode node = root;
    for (i = 0; i < dst.length(); ) {
        TrieNode n = getNode(node, dst.charAt(i));
        if (n == null) {
            if (node == root) {
                return -1;
            }
            count++;
           node = root;
        }
        else {
            node = n;
            i++;
        }
      }
      return count;
}
回复

使用道具 举报

🔗
hanhandai 2018-8-27 04:12:12 | 只看该作者
全局:
如果第5轮只需要判断能不能的话,可以O(m),如果要返回循环几次的话暂时只能想到o(mn),
楼主最后过了吗求更新
回复

使用道具 举报

🔗
lijeffrey 2018-8-27 05:46:56 | 只看该作者
全局:
楼主,吃饭的时候都聊什么话题?
回复

使用道具 举报

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

本版积分规则

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