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

新鲜G家电面, 顺便求加米

🔗
匿名用户-AW0Y6  2019-5-2 02:20:01 |倒序浏览

2019(1-3月) 码农类General 硕士 全职@google - 网上海投 - 技术电面  | | Other | 在职跳槽

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
一个国人小哥,45分钟只做出了这一道题,连follow up都没时间问了
您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies


发现自己大米好少,面试前大部分面经都没权限看,也不知道这道题之前有没有人发过。求加点大米啊。

评分

参与人数 11大米 +25 收起 理由
匿名用户-FJMW2 + 10
hantaozhang + 2 很有用的信息!
大头菜 + 1 很有用的信息!
ttbx + 1 赞一个
popsheep + 1 赞一个

查看全部评分


上一篇:亚麻社招OA
下一篇:Etsy DS(computer vision) 电面-面经
🔗
空心蔡 2019-5-2 04:03:41 | 只看该作者
全局:
已加米,楼主能简单说下思路吗
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-AW0Y6  2019-5-2 10:48:12
空心蔡 发表于 2019-5-2 04:03
已加米,楼主能简单说下思路吗

我其实没有想到什么特别好的办法,最后的解法接近暴力的DFS,就是从一个颜色开始,先固定这个颜色的一个path,然后dfs下一个颜色,以此类推。找到的话就直接返回,否则就递归继续找下去。
回复

使用道具 举报

🔗
大头菜 2019-5-6 04:36:59 | 只看该作者
全局:
follow up有可能是填满所有格子呢?   楼主最后这问做出来了么
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-AW0Y6  2019-5-6 12:15:34
大头菜 发表于 2019-5-6 04:36
follow up有可能是填满所有格子呢?   楼主最后这问做出来了么

做完之后没时间follow up了,recuriter又给补了一个电面,感觉面的一般吧
回复

使用道具 举报

🔗
dingh 2019-5-31 10:30:24 | 只看该作者
全局:
先用dfs找第一条路径,找到后,当场就找第二条路径。只有在当前路径找到,而且在下一条路径也找到的时候,才返回true.
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_set>

  4. using namespace std;

  5. class Solution_flow_free {
  6.     vector<vector<int>> directions{
  7.             {0, 1},
  8.             {0, -1},
  9.             {1, 0},
  10.             {-1, 0}
  11.     };

  12. public:
  13.     bool isValid(vector<vector<int>>& nums) {
  14.         unordered_set<int> nodes;
  15.         vector<vector<int>> start_nodes;
  16.         int i = 0, j = 0;
  17.         for (i = 0; i < nums.size(); i++)
  18.             for (j = 0; j < nums[0].size(); j++)
  19.                 if (nums[i][j] != 0 && nodes.find(nums[i][j]) == nodes.end()) {
  20.                     start_nodes.push_back({i, j, nums[i][j]});
  21.                     nodes.insert(nums[i][j]);
  22.                 }
  23.         if (start_nodes.empty()) return true;
  24.         i = start_nodes[0][0], j = start_nodes[0][1];
  25.         return dfs(nums, start_nodes, 0, true, i, j);
  26.     }

  27.     bool dfs(vector<vector<int>>& nums, vector<vector<int>>& start_nodes, int n, bool start, int i , int j) {
  28.         int start_i = start_nodes[n][0], start_j = start_nodes[n][1], target = start_nodes[n][2];
  29.         if (i < 0 || i == nums.size() || j < 0 || j == nums[0].size())
  30.             return false;
  31.         if (nums[i][j] != 0 && nums[i][j] != target) return false;

  32.         if (!start && nums[i][j] == target) {   // 找到终点,或者回到起点
  33.             if (i == start_i && j == start_j) return false; // 回到起点
  34.             // 找到终点了
  35.             if (n == start_nodes.size() - 1) return true;   // 现在已经是最后一条连线了
  36.             int next_i = start_nodes[n+1][0];
  37.             int next_j = start_nodes[n+1][1];
  38.             return dfs(nums, start_nodes, n+1, true, next_i, next_j);
  39.         } else {    // 要么是刚刚出发,要么是正在路上
  40.             if (nums[i][j] == 0) nums[i][j] = -1;   // 正在路上,标记此点已经访问
  41.             for (const vector<int>& dir: directions) {
  42.                 int next_i = i + dir[0];
  43.                 int next_j = j + dir[1];
  44.                 if (dfs(nums, start_nodes, n, false, next_i, next_j)) return true;
  45.             }
  46.             if (!start) nums[i][j] = 0;
  47.             return false;
  48.         }
  49.     }
  50. };



  51. int main() {
  52.     Solution_flow_free sol;
  53.     vector<vector<int>> nums{
  54.             {1, 0, 0, 2, 0},
  55.             {0, 0, 3, 0, 0},
  56.             {0, 0, 0, 1, 0},
  57.             {0, 2, 0, 0, 0},
  58.             {0, 0, 0, 3, 0}
  59.     };
  60.     cout << sol.isValid(nums) << endl;
  61. }
复制代码



大家看看我这个解法行不行
回复

使用道具 举报

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

本版积分规则

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