12
返回列表 发新帖
楼主: douya
跳转到指定楼层
上一主题 下一主题
收起左侧

facebook 电面

🔗
qjx026 2015-3-17 05:13:58 | 只看该作者
全局:
jzy637 发表于 2015-3-16 07:42
学校牛b就能过。
背景一般就跪。

真相了。。。。。。
回复

使用道具 举报

🔗
robinho364 2015-3-17 12:07:01 | 只看该作者
全局:
qjx026 发表于 2015-3-17 05:13
真相了。。。。。。

确实不能再同意
回复

使用道具 举报

🔗
robinho364 2015-3-17 12:08:42 | 只看该作者
全局:
yuxrose 发表于 2015-3-17 01:59
请问这题面试官expect的答案是DFS还是union find呢?各自有什么优劣呢?

不知道……面试官的心思,真心猜不透。

方法本身没有优劣之分。

所有算法,都需要基于一定的环境下来评判。

如果面试官一定要考察一个人掌握知识的广度,我觉得没有什么意义。

思维的深度远比广度更重要。
回复

使用道具 举报

🔗
dddxhh 2015-3-17 22:36:39 | 只看该作者
全局:
这题并查集是可以做,不过并查集的复杂度略高于线性额。

最好flood fill
回复

使用道具 举报

🔗
pandafolk 2015-3-18 05:02:25 | 只看该作者
全局:
一个电面,,,我一直主张电面不要炫技。。就plain的暴力就ok。贴个子集拙劣的code吧 这是DFS的。
  1. public class SolutionDFS {
  2.    
  3.     private int row;
  4.     private int col;   

  5.     public int solve(int[][] a) {
  6.         this.row = a.length;
  7.         this.col = a[0].length;
  8.         int ans = 0;
  9.         for (int i = 0; i < row; i++) {
  10.             for (int j = 0; j < col; j++) {
  11.                 if (a[i][j] == 1) {
  12.                     dfs(a, i, j);
  13.                     ans++;
  14.                 }
  15.             }
  16.         }
  17.         
  18.         return ans;
  19.     }

  20.     private void dfs(int[][] a, int i, int j){
  21.         if (i < 0 || i >= row || j < 0 || j >= col || a[i][j] != 1) {
  22.             return;
  23.         }
  24.         a[i][j] = 2;
  25.         dfs(a, i + 1, j);
  26.         dfs(a, i, j + 1);
  27.         dfs(a, i - 1, j);
  28.         dfs(a, i, j - 1);
  29.     }
  30. }
复制代码
回复

使用道具 举报

🔗
 楼主| douya 2015-3-18 11:27:42 | 只看该作者
本楼:
全局:
已跪。。。
回复

使用道具 举报

🔗
seabiscuit119 2015-3-18 13:19:27 | 只看该作者
全局:
pandafolk 发表于 2015-3-18 05:02
一个电面,,,我一直主张电面不要炫技。。就plain的暴力就ok。贴个子集拙劣的code吧 这是DFS的。

这个就叫 flood fill是吧?
回复

使用道具 举报

🔗
pandafolk 2015-3-18 21:20:07 | 只看该作者
全局:
seabiscuit119 发表于 2015-3-18 00:19
这个就叫 flood fill是吧?

恩~~字数字数。
回复

使用道具 举报

🔗
yuruofeifei 2015-3-19 05:57:02 | 只看该作者
全局:
我听hr说,90%的fb面试都要面两道题才能过
回复

使用道具 举报

🔗
池大侠 2015-3-23 23:50:00 | 只看该作者
全局:
  1. def check(row, col, board, visit):
  2.         m = len(board)
  3.         n = len(board[0])
  4.         if row >= 0 and row < m and col >= 0 and col < n and visit[row][col] == False and board[row][col] == 1:
  5.                 return True
  6.         return False
  7. def dfs(row, col, board, visit, curcount):
  8.         nbrow = [1, 0, -1, 0]
  9.         nbcol = [0, 1, 0, -1]
  10.         visit[row][col] = True
  11.         curcount += 1
  12.         for k in xrange(4):
  13.                 if check(row + nbrow[k], col + nbcol[k], board, visit):
  14.                         #curcount += 1
  15.                         dfs(row + nbrow[k], col + nbcol[k], board, visit, curcount)
  16.         print curcount



  17. def getRes(board):
  18.         count = 0
  19.         visit = [[False for i in range(len(board[0]))] for j in range(len(board))]
  20.         curcount = 0
  21.         res = []

  22.         for row in xrange(len(board)):
  23.                  for  col in xrange(len(board[0])):
  24.                          if board[row][col] == 1 and visit[row][col] == False:
  25.                                  dfs(row, col, board, visit, curcount)
  26.                                  count += 1
  27.                                  res.append(curcount)
  28.         print visit
  29.         return count, res

  30. board = [[1, 1, 0, 0, 1], [1, 0, 0, 1, 1]]

  31. print getRes(board)

复制代码
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!

想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
回复

使用道具 举报

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

本版积分规则

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