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

脸家店面

🔗
 楼主| Sai_L 2017-10-19 05:43:25 | 只看该作者
全局:
angiehoo 发表于 2017-10-18 22:12
楼主,想问下这个电面是会现场在电脑上run代码么?还是单纯的让口头run呢?
谢谢!!

脸家店面用的是 codepad点io 这个网站,有代码高亮,没run代码,口头解释cases
回复

使用道具 举报

🔗
angiehoo 2017-10-20 10:58:51 | 只看该作者
全局:
Sai_L 发表于 2017-10-19 05:43
脸家店面用的是 codepad点io 这个网站,有代码高亮,没run代码,口头解释cases

好的!谢谢~
回复

使用道具 举报

🔗
king_lm 2017-10-20 23:46:33 | 只看该作者
全局:
根据楼上的讨论,写了下代码,楼主看对不对?
time: 建图O(N), N是所有set的元素总和, BFS: O(n), n所有sets的unique 元素个数, 所以总的时间复杂度应该是O(N)
space: O(N)

  1. package Problems;

  2. import java.util.*;

  3. public class MergeSets {
  4.         public List<List<Integer>> mergeSet(List<List<Integer>> sets) {
  5.                 Map<Integer, List<Integer>> graph = new HashMap<>();//treat it as undirected graph
  6.                 //construct graph adjacent list
  7.                 for(List<Integer> set : sets) {
  8.                         for(int i = 0; i < set.size(); i++) {
  9.                                 int u = set.get(i);
  10.                                 if(!graph.containsKey(u)) {
  11.                                         graph.put(u, new ArrayList<Integer>());
  12.                                 }
  13.                                 if(i != 0) {
  14.                                         int v = set.get(i - 1);//only to get the former neighbor which must exist in graph
  15.                                         graph.get(v).add(u);
  16.                                         graph.get(u).add(v);
  17.                                 }
  18.                         }
  19.                 }
  20.                
  21.                 System.out.println("Graph:");
  22.                
  23.                 List<List<Integer>> res = new ArrayList<>();
  24.                 Set<Integer> visited = new HashSet<Integer>();
  25.                 Queue<Integer> q = new LinkedList<Integer>();
  26.                
  27.                 for(Map.Entry<Integer, List<Integer>> entry : graph.entrySet()) {
  28.                         //travse all nodes in graph
  29.                         int u = entry.getKey();
  30.                         List<Integer> component = new ArrayList<Integer>();
  31.                         //if not traverse before, use this node as start to find component by BFS
  32.                         if(!visited.contains(u)) {
  33.                                 q.offer(u);
  34.                                 visited.add(u);
  35.                                 while(!q.isEmpty()) {
  36.                                         int cur = q.poll();
  37.                                         component.add(cur);//add to current component
  38.                                         for(int adj : graph.get(cur)) {
  39.                                                 if(!visited.contains(adj)) {
  40.                                                         q.offer(adj);
  41.                                                         visited.add(adj);
  42.                                                 }
  43.                                         }
  44.                                 }
  45.                                 res.add(new ArrayList<Integer>(component));
  46.                         }
  47.                 }
  48.                 return res;
  49.         }
  50.        
  51.         public static void main(String[] args) {
  52.                 MergeSets obj = new MergeSets();
  53.                 int[][] input = {{1,2},{2,3},{3,4},{5,6,7},{7,8},{9},{9}};
  54.                 List<List<Integer>> sets = new ArrayList<>();
  55.                 for(int[] nums : input) {
  56.                         List<Integer> set = new ArrayList<>();
  57.                         for(int num : nums) {
  58.                                 set.add(num);
  59.                         }
  60.                         sets.add(new ArrayList<Integer>(set));
  61.                 }
  62.                
  63.                 for(List<Integer> set : sets) {
  64.                         System.out.println(set);
  65.                 }
  66.                
  67.                 System.out.println("After merge:");
  68.                
  69.                 for(List<Integer> set : obj.mergeSet(sets)) {
  70.                         System.out.println(set);
  71.                 }
  72.                
  73.         }
  74. }
复制代码

评分

参与人数 5大米 +20 收起 理由
高渐离击筑高歌 + 5 很有用的信息!
sophiacy + 5 给你点个赞!
844587076 + 2 感谢!!!
qq274880049 + 5 欢迎来介绍你知道的情况
Sai_L + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
 楼主| Sai_L 2017-10-21 12:16:03 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
king_lm 2017-10-21 12:19:01 | 只看该作者
全局:
Sai_L 发表于 2017-10-21 12:16
对的,代码写的很好!
这样建图确实是O(N),N=n*m,之前14楼那位仁兄的建图稍微复杂了些

有道理,感谢建议。10天后面试,紧张。。。
回复

使用道具 举报

全局:
感觉和利口伞尔伞很像 就是需要自己建个图 并且输出unconnected components
回复

使用道具 举报

🔗
顾页威 2018-5-14 13:06:24 | 只看该作者
全局:
Sai_L 发表于 2017-10-17 14:25
一就是求树的最长路径,lc原题。
二跟merge intervals还不太一样,不能只看第一个和最后一个了,像{1,3} ...

请问学长是GWU CS的吗
回复

使用道具 举报

🔗
 楼主| Sai_L 2018-5-16 11:18:41 | 只看该作者
全局:
顾页威 发表于 2018-5-14 13:06
请问学长是GWU CS的吗

你好!对,已经毕业了
回复

使用道具 举报

🔗
QccDQ 2018-5-19 09:59:04 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
 楼主| Sai_L 2018-5-19 12:52:14 | 只看该作者
全局:
sw7eets 发表于 2018-5-19 09:59
union的复杂度为什么不能直接说O(1)阿?

可以搜一下 amortized complexity union find,就会明白~
回复

使用道具 举报

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

本版积分规则

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