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

Drive.AI OA 把我虐哭!

全局:

2017(7-9月) 码农类General 硕士 全职@drive.ai - 猎头 - 在线笔试  | | Other | 应届毕业生

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

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

x
刚刚做完drive.ai 被虐哭!!!
只能用C++或者Python来写,像我这种Java选手蛋疼了!
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
有object 赋予一个公共的id, 也就是说要在原来的 2D data values 里面设置id值!(一直test cases 过不去,时间来不及了!)

感觉这家公司招人bar 好高啊!

评分

参与人数 2大米 +43 收起 理由
random_who + 3 感谢分享!
夏虫不知雪花 + 40

查看全部评分


上一篇:A9 phone screen
下一篇:怎么把握住onsite的机会?
推荐
chaohubian 2017-8-27 04:13:51 | 只看该作者
全局:
  1. class Solution {
  2. public:
  3. //这是我第二题的解法,也可以memo之前的 value, id
  4.     class Point {
  5.     public:
  6.         int x, y;
  7.         int value;
  8.         int id;
  9.         Point(int x, int y, int value=0, int id=0) {
  10.             this->x=x;
  11.             this->y=y;
  12.             this->value=value;
  13.             this->id=id;
  14.         }
  15.     };
  16.     void test() {
  17.         vector<vector<Point*>> points;
  18.         points.push_back({});
  19.         points[0].push_back(new Point(0, 0, 1));
  20.         points[0].push_back(new Point(0, 1, 1));
  21.         points[0].push_back(new Point(0, 2));
  22.         points[0].push_back(new Point(0, 3));
  23.         points[0].push_back(new Point(0, 4));
  24.         points.push_back({});
  25.         points[1].push_back(new Point(1, 0, 1));
  26.         points[1].push_back(new Point(1, 1, 1));
  27.         points[1].push_back(new Point(1, 2));
  28.         points[1].push_back(new Point(1, 3));
  29.         points[1].push_back(new Point(1, 4));
  30.         points.push_back({});
  31.         points[2].push_back(new Point(2, 0));
  32.         points[2].push_back(new Point(2, 1));
  33.         points[2].push_back(new Point(2, 2, 1));
  34.         points[2].push_back(new Point(2, 3));
  35.         points[2].push_back(new Point(2, 4));
  36.         points.push_back({});
  37.         points[3].push_back(new Point(3, 0));
  38.         points[3].push_back(new Point(3, 1));
  39.         points[3].push_back(new Point(3, 2));
  40.         points[3].push_back(new Point(3, 3, 1));
  41.         points[3].push_back(new Point(3, 4, 1));
  42.         points.push_back({});
  43.         points[4].push_back(new Point(4, 0));
  44.         points[4].push_back(new Point(4, 1));
  45.         points[4].push_back(new Point(4, 2));
  46.         points[4].push_back(new Point(4, 3, 1));
  47.         points[4].push_back(new Point(4, 4, 1));
  48.         /*
  49.          1 1 0 0 0
  50.          1 1 0 0 0
  51.          0 0 1 0 0
  52.          0 0 0 1 1
  53.          0 0 0 1 1
  54.          */
  55.         vector<vector<Point*>> result = pixelClustering(points, 1, 3);
  56.     }
  57.    
  58.     vector<vector<Point*>> pixelClustering(vector<vector<Point*>>& points, int dist, int counts) {
  59.         if (points.empty() || points.size()==0 || points[0].size()==0) {
  60.             return points;
  61.         }
  62.         vector<vector<Point*>> result=points;
  63.         int newid=1;
  64.         for (int i=0; i<result.size(); i++) {
  65.             for (int j=0; j<result[0].size(); j++) {
  66.                 if (result[i][j]->value==1) {
  67.                     int counter=1;
  68.                     dfsHelper(points, i, j, dist, counter);
  69.                     if (counter<counts) {
  70.                         cleaner(points, i, j, dist);
  71.                     }
  72.                     else {
  73.                         remarker(points, i, j, dist, newid);
  74.                         newid++;
  75.                     }
  76.                 }
  77.             }
  78.         }
  79.         return result;
  80.     }
  81.    
  82. private:
  83.     void remarker(vector<vector<Point*>>& points, int x, int y, int dist, int newid) {
  84.         points[x][y]->value=2;
  85.         points[x][y]->id=newid;
  86.         if (x>0) {
  87.             for (int delta=1; delta<=dist; delta++) {
  88.                 if (x-delta>=0 && points[x-delta][y]->value==-1) {
  89.                     remarker(points, x-delta, y, dist, newid);
  90.                 }
  91.             }
  92.         }
  93.         if (x<points.size()-1) {
  94.             for (int delta=1; delta<=dist; delta++) {
  95.                 if (x+delta<points.size() && points[x+delta][y]->value==-1) {
  96.                     remarker(points, x+delta, y, dist, newid);
  97.                 }
  98.             }
  99.         }
  100.         if (y>0) {
  101.             for (int delta=1; delta<=dist; delta++) {
  102.                 if (y-delta>=0 && points[x][y-delta]->value==-1) {
  103.                     remarker(points, x, y-delta, dist, newid);
  104.                 }
  105.             }
  106.         }
  107.         if (y<points[0].size()-1) {
  108.             for (int delta=1; delta<=dist; delta++) {
  109.                 if (y+delta<points[0].size() && points[x][y+delta]->value==-1) {
  110.                     remarker(points, x, y+delta, dist, newid);
  111.                 }
  112.             }
  113.         }
  114.     }
  115.     void cleaner(vector<vector<Point*>>& points, int x, int y, int dist) {
  116.         //clean point value
  117.         points[x][y]->value=0;
  118.         points[x][y]->id=0;
  119.         if (x>0) {
  120.             for (int delta=1; delta<=dist; delta++) {
  121.                 if (x-delta>=0 && points[x-delta][y]->value==-1) {
  122.                     cleaner(points, x-delta, y, dist);
  123.                 }
  124.             }
  125.         }
  126.         if (x<points.size()-1) {
  127.             for (int delta=1; delta<=dist; delta++) {
  128.                 if (x+delta<points.size() && points[x+delta][y]->value==-1) {
  129.                     cleaner(points, x+delta, y, dist);
  130.                 }
  131.             }
  132.         }
  133.         if (y>0) {
  134.             for (int delta=1; delta<=dist; delta++) {
  135.                 if (y-delta>=0 && points[x][y-delta]->value==-1) {
  136.                     cleaner(points, x, y-delta, dist);
  137.                 }
  138.             }
  139.         }
  140.         if (y<points[0].size()-1) {
  141.             for (int delta=1; delta<=dist; delta++) {
  142.                 if (y+delta<points[0].size() && points[x][y+delta]->value==-1) {
  143.                     cleaner(points, x, y+delta, dist);
  144.                 }
  145.             }
  146.         }
  147.     }
  148.    
  149.     void dfsHelper(vector<vector<Point*>>& points, int x, int y, int dist, int& counter) {
  150.         //set to -1 for clean or remark
  151.         points[x][y]->value=-1;
  152.         if (x>0) {
  153.             for (int delta=1; delta<=dist; delta++) {
  154.                 if (x-delta>=0 && points[x-delta][y]->value==1) {
  155.                     counter++;
  156.                     dfsHelper(points, x-delta, y, dist, counter);
  157.                 }
  158.             }
  159.         }
  160.         if (x<points.size()-1) {
  161.             for (int delta=1; delta<=dist; delta++) {
  162.                 if (x+delta<points.size() && points[x+delta][y]->value==1) {
  163.                     counter++;
  164.                     dfsHelper(points, x+delta, y, dist, counter);
  165.                 }
  166.             }
  167.         }
  168.         if (y>0) {
  169.             for (int delta=1; delta<=dist; delta++) {
  170.                 if (y-delta>=0 && points[x][y-delta]->value==1) {
  171.                     counter++;
  172.                     dfsHelper(points, x, y-delta, dist, counter);
  173.                 }
  174.             }
  175.         }
  176.         if (y<points[0].size()-1) {
  177.             for (int delta=1; delta<=dist; delta++) {
  178.                 if (y+delta<points[0].size() && points[x][y+delta]->value==1) {
  179.                     counter++;
  180.                     dfsHelper(points, x, y+delta, dist, counter);
  181.                 }
  182.             }
  183.         }
  184.     }
  185. };
复制代码
回复

使用道具 举报

推荐
 楼主| lcq123 2017-7-3 13:21:43 | 只看该作者
全局:
wendaomumu 发表于 2017-7-3 13:13
请问楼主maystack是啥?另外“如果adjacent 来个pixel值相离不超过D”意思是要求同一个object里面任意两个 ...

Maystack 那道题不难,只是比常规的stack多了一个函数
回复

使用道具 举报

推荐
 楼主| lcq123 2017-7-3 13:21:11 | 只看该作者
全局:
wendaomumu 发表于 2017-7-3 13:13
请问楼主maystack是啥?另外“如果adjacent 来个pixel值相离不超过D”意思是要求同一个object里面任意两个 ...

不好意思,打错了,是任意相邻俩个pixel
回复

使用道具 举报

🔗
RyanWindaZ 2017-7-6 09:38:17 | 只看该作者
全局:
"然后还需要把搜索出来的所有object 赋予一个公共的id, 也就是说要在原来的 2D data values 里面设置id值!"
請問這個id的作用是甚麼?
回复

使用道具 举报

🔗
jili 2017-7-7 02:39:09 | 只看该作者
全局:
不错啦,至少还有oa, 我和我同学直接被拒简历。。
回复

使用道具 举报

🔗
chaohubian 2017-8-26 07:55:38 | 只看该作者
全局:
第二题不就是机器学习里KNN分类算法么?我操!
回复

使用道具 举报

🔗
LukeDong 2017-8-26 19:40:17 | 只看该作者
全局:
第二题……有点想ccl吧
回复

使用道具 举报

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

本版积分规则

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