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

google加面

全局:
alanlxl 发表于 2018-3-31 10:14
round2应该可以简单如下解决,思路是:一个点成为一棵树的root,当且仅当它不被删除 and 它的父亲被删除
* ...

line 9 - line 14可以这样?
if(shouldeDelete(parent) && !shouldDelete(curr))
         result.push_back(curr);

回复

使用道具 举报

🔗
海地民工 2018-4-2 08:21:59 | 只看该作者
全局:
lf963 发表于 2018-4-2 05:42
我寫出來了,寫完後發現和之前那位用三維dp的很像,由於題目說了正數不會形成 cycle ,所以才能用記憶法
...

好像没问题 速度也快了很多 给老哥点赞👍 我在学习一下
回复

使用道具 举报

🔗
海地民工 2018-4-2 08:51:59 | 只看该作者
全局:
lf963 发表于 2018-4-2 05:42
我寫出來了,寫完後發現和之前那位用三維dp的很像,由於題目說了正數不會形成 cycle ,所以才能用記憶法
...

请问 这个 int temp = DFS(maze,memorization,nextX,nextY,3 - dir); 是什么意思?
回复

使用道具 举报

🔗
alanlxl 2018-4-2 14:39:56 | 只看该作者
全局:
flyPacific111 发表于 2018-4-2 07:26
line 9 - line 14可以这样?
if(shouldeDelete(parent) && !shouldDelete(curr))
         result.push ...

嗯差不多的意思,只是如果cur被删除的话,要记得断开它与左右子的连接
回复

使用道具 举报

全局:
alanlxl 发表于 2018-4-2 14:39
嗯差不多的意思,只是如果cur被删除的话,要记得断开它与左右子的连接

我又看了一下,发现还有个问题。如果curr需要被删除,还需要切断parent和curr的联系吧
回复

使用道具 举报

🔗
legendks 2018-4-4 03:11:41 | 只看该作者
全局:
flyPacific111 发表于 2018-4-2 22:00
我又看了一下,发现还有个问题。如果curr需要被删除,还需要切断parent和curr的联系吧

其实cur = NULL就行了。。
回复

使用道具 举报

🔗
legendks 2018-4-4 03:14:38 | 只看该作者
全局:
第一题第二问,由于无环,dfs一遍不会重复,应该是不需要任何extra space(标记数组坐在原数组上), O(nm)矩阵大小就能做。
  1. #include <iostream>
  2. #include <vector>

  3. using namespace std;

  4. inline check(vector<vector<int>>& vec, int i, int j){
  5.     return i >= 0 && j >= 0 && i < vec.size() && j < vec[0].size() && vec[i][j] > 0;
  6. }

  7. int dfs(vector<vector<int>>& vec, int i, int j, int ii, int jj, int& maxmine){
  8.     int val = vec[i][j];
  9.     int curmax = 0, accummax = 0;
  10.     int l = 0, r = 0, u = 0, d = 0;
  11.     if(check(vec,i+1,j) && (i+1 != ii || j != jj))r = dfs(vec,i+1,j,i,j,maxmine);
  12.     if(check(vec,i-1,j) && (i-1 != ii || j != jj))l = dfs(vec,i-1,j,i,j,maxmine);
  13.     if(check(vec,i,j+1) && (i != ii || j+1 != jj))d = dfs(vec,i,j+1,i,j,maxmine);
  14.     if(check(vec,i,j-1) && (i != ii || j-1 != jj))u = dfs(vec,i,j-1,i,j,maxmine);
  15.     accummax = max(r,max(l,max(d,u)));
  16.     curmax = max(l+r,max(l+u,max(l+d,max(r+u,max(r+d,u+d)))));
  17.     maxmine = max(maxmine,curmax+val);
  18.     vec[i][j] = 0;
  19.     return val + accummax;
  20. }

  21. int maxMine(vector<vector<int>>& vec){
  22.     int n = vec.size();
  23.     if(n == 0)return 0;
  24.     int m = vec[0].size();
  25.     int maxmine = 0;
  26.     for(int i=0;i<n;i++){
  27.         for(int j=0;j<m;j++){
  28.             if(vec[i][j] > 0){
  29.                 dfs(vec,i,j,-1,-1,maxmine);
  30.             }
  31.         }
  32.     }
  33.     return maxmine;
  34. }

  35. int main(){
  36.     vector<vector<int>> vec({{1,0,0,0,2,4,6,0,0,1},
  37.                             {3,1,4,3,0,0,1,2,0,2},
  38.                             {5,0,0,2,1,0,0,3,0,3},
  39.                             {0,0,0,0,5,6,5,4,1,4},
  40.                             {2,4,6,0,4,0,7,0,2,0},
  41.                             {0,0,1,2,3,0,8,0,3,0},
  42.                             {0,0,2,0,0,0,9,0,4,0},
  43.                             {0,0,3,4,5,0,0,0,0,0},
  44.                             {0,0,0,0,6,5,3,4,9,0},
  45.                             {1,2,3,4,5,0,2,0,0,0}});
  46.     cout << maxMine(vec) << endl;
  47. }
复制代码


c艹的,上面老哥的样例,答案应该是91. 如果有问题欢迎指正~
回复

使用道具 举报

🔗
 楼主| zhanglixue 2018-4-6 11:32:14 | 只看该作者
全局:
尴尬,竟然给offer了。可惜太晚了,已经签了。。。
回复

使用道具 举报

🔗
iamafrican 2018-4-12 11:07:41 | 只看该作者
全局:
请问第一题iterator怎么写呢 感觉并不好写啊
回复

使用道具 举报

🔗
ScarlettQQ 2018-4-12 11:10:48 | 只看该作者
全局:
请问一下楼主,到底是什么决定四轮还是五轮呀?我以为new grad都是4轮?
回复

使用道具 举报

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

本版积分规则

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