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

黑车二面

🔗
匿名用户-WRM9U  2018-11-16 02:53:02 |倒序浏览

2018(10-12月) 码农类General 硕士 实习@uber - 内推 - 技术电面  | | Other | 应届毕业生

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

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

x
地里的面经题,也是唯一一道没做,,,只看了看的题。。。。面试以及其丑陋的方式,漏掉了n多corner
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
0 05:04):
update:已挂

评分

参与人数 2大米 +13 收起 理由
海岛与鹿 + 3 很有用的信息!
meglory + 10 很有用的信息!

查看全部评分


上一篇:FB intern电面
下一篇:IMC 1st OA
推荐
monaziyi 2018-11-17 02:12:57 | 只看该作者
全局:
论坛匿名用户 发表于 2018-11-16 02:56
|.|.|x|.|.|.|
|.|x|o|x|.|.|
|.|.|x|.|.|.|   给坐标(x,y)判断有没有被capture, capture的唯一标准是o周 ...

如果这个capture和围棋是同一个概念的话,难道面试官希望你用DFS?与(x,y)相连的O和外围的X都要被访问一遍的,这种情况下dfs没有什么优势吧 也不太可能是union find, 面试官有啥好惊讶的
回复

使用道具 举报

推荐
thuxx 2018-12-11 02:15:29 | 只看该作者
全局:
  1. import java.io.*;
  2. import java.util.*;

  3. class Solution {
  4.     int[] dx = {0, 0, 1, -1};
  5.     int[] dy = {1, -1, 0, 0};
  6.     public boolean isCaptured(int x, int y, char[][] board) {
  7.         if(x < 0 && y < 0 && x >= board.length && y >= board[0].length) {
  8.             return false;
  9.         }
  10.         if(board[x][y] != 'O') {
  11.             return false;
  12.         }

  13.         int rows = board.length;
  14.         int cols = board[0].length;
  15.         Set<Integer> visited = new HashSet<>();
  16.         Deque<Integer> queue = new ArrayDeque<>();
  17.         queue.offer(x * cols + y);
  18.         visited.add(x * cols + y);
  19.         while(!queue.isEmpty()) {
  20.             int point = queue.poll();
  21.             for(int i = 0; i < 4; i++) {
  22.                 int px = point / cols + dx[i];
  23.                 int py = point % cols + dy[i];
  24.                 if(px < 0 || py < 0 || px >= rows || py >= cols) {
  25.                     // not surrounded by 'X'
  26.                     return false;
  27.                 } else {
  28.                     if(board[px][py] != 'X' && visited.add(px * cols + py)) {
  29.                         queue.offer(px * cols + py);
  30.                     }
  31.                 }
  32.             }
  33.         }

  34.         return true;
  35.     }

  36.     public static void main(String[] args) {
  37.         Solution s = new Solution();
  38.         char[][] board = {
  39.             {'.', '.', 'X', 'X', '.'},
  40.             {'.', 'X', 'O', 'O', 'X'},
  41.             {'.', 'O', 'X', 'O', 'X'},
  42.             {'X', 'X', 'O', 'X', 'O'},
  43.             {'.', '.', 'X', 'X', 'O'}};
  44.         char[][] board2 = {
  45.             {'.', '.', 'X', 'X', '.'},
  46.             {'.', 'X', '.', 'O', 'X'},
  47.             {'X', '.', 'O', '.', 'X'},
  48.             {'X', 'X', '.', 'X', '.'},
  49.             {'.', '.', 'X', '.', '.'}};
  50.         for(int i = 0; i < board.length; i++) {
  51.             for(int j = 0; j < board[0].length; j++) {
  52.                 System.out.print(s.isCaptured(i, j, board2) + ", ");
  53.             }
  54.             System.out.println();
  55.         }
  56.     }
  57. }
复制代码
回复

使用道具 举报

推荐
thuxx 2018-12-11 04:11:00 | 只看该作者
全局:
  1. import java.io.*;
  2. import java.util.*;

  3. class Solution {
  4.     int[] dx = {0, 0, 1, -1};
  5.     int[] dy = {1, -1, 0, 0};
  6.    
  7.     public boolean isCaptured(int x, int y, char[][] board) {
  8.         if(x < 0 && y < 0 && x >= board.length && y >= board[0].length) {
  9.             return false;
  10.         }
  11.         if(board[x][y] != 'O') {
  12.             return false;
  13.         }

  14.         // copy original data so that keep original board unchanged
  15.         char[][] copy = new char[board.length][board[0].length];
  16.         for(int i = 0; i < board.length; i++) {
  17.             for(int j = 0; j  < board[0].length; j++) {
  18.                 copy[i][j] = board[i][j];
  19.             }
  20.         }
  21.         return helper(x, y, copy);
  22.     }

  23.     private boolean helper(int x, int y, char[][] board) {
  24.         if(x < 0 || y < 0 || x >= board.length ||  y >= board[0].length) {
  25.             return false;
  26.         }
  27.         if(board[x][y] =='X') {
  28.             return true;
  29.         }

  30.         board[x][y] = 'X';
  31.         boolean isCaptured = true;
  32.         for(int i = 0; i < 4; i++) {
  33.             isCaptured &= helper(x + dx[i], y + dy[i], board);
  34.         }
  35.         return isCaptured;
  36.     }

  37.     public static void main(String[] args) {
  38.         Solution s = new Solution();
  39.         char[][] board = {
  40.             {'.', '.', 'X', 'X', '.'},
  41.             {'.', 'X', 'O', 'O', 'X'},
  42.             {'.', 'O', 'X', 'O', 'X'},
  43.             {'X', 'X', 'O', 'X', 'O'},
  44.             {'.', '.', 'X', 'X', 'O'}};
  45.         char[][] board2 = {
  46.             {'.', '.', 'X', 'X', '.'},
  47.             {'.', 'X', '.', 'O', 'X'},
  48.             {'X', '.', 'O', '.', 'X'},
  49.             {'X', 'X', '.', 'X', '.'},
  50.             {'.', '.', 'X', '.', '.'}};
  51.         for(int i = 0; i < board.length; i++) {
  52.             for(int j = 0; j < board[0].length; j++) {
  53.                 System.out.print(s.isCaptured(i, j, board2) + ", ");
  54.             }
  55.             System.out.println();
  56.         }
  57.     }
  58. }
复制代码


DFS还要修改棋盘,感觉没BFS好
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-WRM9U  2018-11-16 02:56:46
|.|.|x|.|.|.|
|.|x|o|x|.|.|
|.|.|x|.|.|.|   给坐标(x,y)判断有没有被capture, capture的唯一标准是o周围都是x, 返回true,其他所有都返回false;我用的BFS,但貌似不是最优解,我看面试官听我说用BFS的时候挺惊讶的。。。貌似不是他想要的答案,然而我只会BFS。。。。求过啊

评分

参与人数 1大米 +5 收起 理由
alice12 + 5 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
iammoderator 2018-11-16 03:49:22 | 只看该作者
全局:
难道他希望你用union find ?
回复

使用道具 举报

🔗
alice12 2018-11-16 04:26:46 | 只看该作者
全局:
请问楼主多久约上的二面呢。我怎么感觉被HR抛弃了
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-WRM9U  2018-11-16 07:22:57
1周的时候给hr发邮件回复说他们正是peak,然后又过了一周就收到约上的邮件了

评分

参与人数 1大米 +3 收起 理由
海岛与鹿 + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
ohsure 2018-11-16 22:47:46 | 只看该作者
全局:
论坛匿名用户 发表于 2018-11-16 02:56
|.|.|x|.|.|.|
|.|x|o|x|.|.|
|.|.|x|.|.|.|   给坐标(x,y)判断有没有被capture, capture的唯一标准是o周 ...

|x|o|x
|x|o|x
|x|o|x
请问楼主,这种情况 (1,1) 被 capture 了嘛
回复

使用道具 举报

🔗
monaziyi 2018-11-17 01:56:04 | 只看该作者
全局:

这个显然没有,这个capture就和围棋的一样, 被包围才行
回复

使用道具 举报

🔗
monaziyi 2018-11-17 01:57:23 | 只看该作者
全局:
论坛匿名用户 发表于 2018-11-16 02:56
|.|.|x|.|.|.|
|.|x|o|x|.|.|
|.|.|x|.|.|.|   给坐标(x,y)判断有没有被capture, capture的唯一标准是o周 ...

为啥要BFS呢, 判断上下左右难道不可以?
回复

使用道具 举报

🔗
monaziyi 2018-11-17 02:05:07 | 只看该作者
全局:
monaziyi 发表于 2018-11-17 01:57
为啥要BFS呢, 判断上下左右难道不可以?

如果多个O在一起 的确是要考虑用DFS/BFS
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-WRM9U  2018-11-17 02:12:03

如果面道,你要问面试官的他怎么定义的,我当时的面试官是定义成false的

评分

参与人数 1大米 +3 收起 理由
海岛与鹿 + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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