0928Airbnb笔试100+100

这次笔试一共两道题,lc medium级别,两道题都过了,不过后面看牛友考前收到官方短信说不能切出去本地用IDE,我没收到,然后用IDE做的,大概率被判作弊凉了,真是倒霉gg
1,第一题 100%
大意是在有向无环图中,对每个节点来说,有多少个节点(包括他自己)可以到达他。
------刚开始直接按照拓扑排序,不太对,因为对节点A来说,另一个节点B可能有多条路到达A,所以节点B被重复计算,所以后面稍微改了下,改成能到达A的所有节点放入set中,直接去重,输出大小+1;
写的有点繁琐,按照字符串去处理的,应该有更好的解法。
map<string, vector<string>> m;
map<string, int> indegree;
map<string, set<string>> rr;
set<string> dian;
void helper(vector<string>& lines){ // 处理字符串
    for(auto s : lines){
        string root, tmp;
        int n = (int)s.size();
        int i = 0;
        while(i < n && s[i] != ','){
            root += s[i++];
        }
        dian.insert(root);
        if(i == n){
            continue;
        }
        i++;
        while(i < n){
            if(s[i] == ','){
                 m[root].push_back(tmp); // 图
                 indegree[tmp]++;
                 dian.insert(tmp);
                 tmp = "";
                 i++;
            }else{
                tmp += s[i++];
            }
        }
        m[root].push_back(tmp);
        indegree[tmp]++;
        dian.insert(tmp);
    }
}

vector<string> costsOfNodes(vector<string> lines) {
    if(lines.empty()) return {};
    vector<string> re;
    helper(lines);
    while(true){
        bool f = false;
        for(auto tmp : dian){
            if(indegree[tmp] != 0) continue;
            //rr[tmp].insert(root);
            for(auto ss : m[tmp]){
                indegree[ss]--; // 入度--
                rr[ss].insert(tmp);
                for(auto s : rr[tmp]) rr[ss].insert(s);
                //rr[ss]++;
            }
            indegree[tmp] = -1;
            f = true;
            re.push_back(tmp + "," + to_string(rr[tmp].size() + 1));
        }
        if(f == false) break;
    }
    sort(re.begin(), re.end());
    return re;
}
第二题,100%
lc原题,leetcode166
1,这道题要我们模拟除法,表示出两个数相除的结果,如果有循环,循环节用括号表示,比如1/3=0.(3)
2,注意几点地方,一个是负数,一个是 INT_MIN/-1 可能会溢出
3,剩下的就是模拟除法了,小数点后每一位就是除数不断乘10除以被除数,除数模被除数后,放入set中,当有重复的时候,说明循环节找到了,加上括号即可
=============

#笔试题目##airbnb##题解#
全部评论
第一题位运算简单一点
点赞 回复 分享
发布于 2019-09-28 09:46
我感觉他这个根本没有判定切出去的功能,不要怕
点赞 回复 分享
发布于 2019-09-28 09:24
第二题需要考虑负数吗?我没考虑负数,但也都过了
点赞 回复 分享
发布于 2019-09-28 10:25
第一题数据是不是最多只有26个字母A-Z?
点赞 回复 分享
发布于 2019-09-28 10:55
确定不是ez难度么
点赞 回复 分享
发布于 2019-09-29 13:23
老哥我也是,本地ide全a了,到现在没消息,唉这可太坑了
点赞 回复 分享
发布于 2019-09-29 15:13
+1,收到电话的老哥请update一下鸭
点赞 回复 分享
发布于 2019-09-29 16:17
请问楼主收到下一轮面试通知了吗?
点赞 回复 分享
发布于 2019-10-11 18:04

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
点赞 13 评论
分享
牛客网
牛客企业服务