📣 独立日限时特惠: VIP通行证立减$68
回复: 12
跳转到指定楼层
上一主题 下一主题
收起左侧

Dropbox Intern OA 电面 两轮

全局:

2016(1-3月) 码农类General 本科 实习@dropbox - 网上海投 - 技术电面 在线笔试  | | Other | 其他

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

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

x
OA: Frenemy
做之前看过面经。实际一开始dfs总是过不去(最后两个test cases超时)。最后用dp写过。

3/14 Phone Interview 1经典题duplicate file。这题没有要求run,只要边写边解释。大概解法:dfs找文件,根据size分类得到所有同size的文件。然后拿最开始的100byte做key,放进hashmap筛选,要是再
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
plexity在 (sizes.length)^n 级别,因为n可以非常大,所以很容易指数爆炸,但是一般来说pack sizes只有那么几种,所以她想让我写 n^(sizes.length) 级别的解法。我表示迷茫。如果没过就是这里followup跪了。

评分

参与人数 4大米 +14 收起 理由
yunyunhello + 3 很有用的信息!
haoyunlailailai + 3 感谢分享!
frk + 3 谢谢你的介绍!
fanzy + 5 感谢分享!

查看全部评分


上一篇:Twiiter OA 新鲜跪经
下一篇:Dropbox gethit loghit 看法
推荐
seasean 2017-11-27 09:21:12 | 只看该作者
全局:
这题应该是lc里的combination sum 而不是 combination sum II 吧
回复

使用道具 举报

推荐
itgoujie2 2017-8-30 13:49:28 | 只看该作者
全局:
写了个dp,但是加了个丑陋的去重,所以时间复杂度也不低
  1. package dropbox;


  2. import java.util.*;

  3. public class Soda{

  4.         public static void main(String[] args){
  5.                 System.out.println(solve(new int[]{1,6,12}, 12));
  6.         }

  7.         private static List<List<Integer>> solve(int[] sizes, int total){
  8.                 Map<Integer, List<List<Integer>>> hash = new HashMap<>();

  9.                 for (int i = 0; i <= total; i++){
  10.                         hash.put(i, new ArrayList<List<Integer>>());
  11.                 }

  12.                 for (int i = 1; i <= total; i++){
  13.                         List<List<Integer>> container = hash.get(i);
  14.                         for (int size : sizes){
  15.                                 if (size <= i){
  16.                                         if (hash.get(i - size).size() == 0){
  17.                                                 List<Integer> temp = new ArrayList<>();
  18.                                                 temp.add(size);
  19.                                                 container.add(temp);
  20.                                         }
  21.                                         else{
  22.                                                 for (List<Integer> list : hash.get(i - size)){
  23.                                                         List<Integer> temp = new ArrayList<>();
  24.                                                         temp.add(size);
  25.                                                         temp.addAll(list);
  26.                                                         if (!hasDup(container, temp)){
  27.                                                                 container.add(temp);
  28.                                                         }
  29.                                                        
  30.                                                         //System.out.println("i: " + i + " size: " + size);
  31.                                                         //System.out.println("container: " + container);
  32.                                                 }
  33.                                         }
  34.                                 }
  35.                         }
  36.                 }
  37.                
  38.                 //System.out.println(hash.get(total));
  39.                
  40.                 return hash.get(total);
  41.         }
  42.        
  43.         private static boolean hasDup(List<List<Integer>> container, List<Integer> checker){
  44.                 for (List<Integer> list : container){
  45.                         if (list.containsAll(checker)) return true;
  46.                 }
  47.                
  48.                 return false;
  49.         }
  50. }
复制代码
回复

使用道具 举报

🔗
fanzy 2016-3-21 06:48:05 | 只看该作者
全局:
lz第二问的followup应该是用dp吧?像背包问题
回复

使用道具 举报

🔗
letsdoit666 2016-3-21 09:29:28 | 只看该作者
全局:
fanzy 发表于 2016-3-21 06:48
lz第二问的followup应该是用dp吧?像背包问题

我觉得如果这题DFS做的话,时间复杂度应该是O(n!), 如果dp解的话,应该是O(n * size * k),其中k为每个list的长度,不懂为何这个是polynomial time。
回复

使用道具 举报

🔗
fanzy 2016-3-21 09:49:34 | 只看该作者
全局:
letsdoit666 发表于 2016-3-21 09:29
我觉得如果这题DFS做的话,时间复杂度应该是O(n!), 如果dp解的话,应该是O(n * size * k),其中k为每个li ...

k为每个list的长度,这里的list指的是什么呢?我写了一下代码,dp结构的初始化需要O(n*size*size),关键是后面的那个结果的计算,复杂度是O(结果总数)。复杂度起码会是结果总数吧,如果结果总数是O(size^n)的话,怎么能做到polynomial呢?
回复

使用道具 举报

🔗
fanzy 2016-3-21 09:50:45 | 只看该作者
全局:
letsdoit666 发表于 2016-3-21 09:29
我觉得如果这题DFS做的话,时间复杂度应该是O(n!), 如果dp解的话,应该是O(n * size * k),其中k为每个li ...

如果只需要结果总数,dp的优势才明显吧= =
回复

使用道具 举报

🔗
letsdoit666 2016-3-21 09:59:49 | 只看该作者
全局:
fanzy 发表于 2016-3-21 09:49
k为每个list的长度,这里的list指的是什么呢?我写了一下代码,dp结构的初始化需要O(n*size*size),关键 ...

大概是这个思路吧https://leetcode.com/discuss/23818/iterative-java-dp-solution?
回复

使用道具 举报

🔗
ok123 2016-3-21 10:01:56 | 只看该作者
全局:
dp, and then back track
回复

使用道具 举报

🔗
fanzy 2016-3-21 10:23:49 | 只看该作者
全局:
letsdoit666 发表于 2016-3-21 09:59
大概是这个思路吧https://leetcode.com/discuss/23818/iterative-java-dp-solution?

是的,思路是这样,空间可以再优化
回复

使用道具 举报

🔗
letsdoit666 2016-3-21 12:26:56 | 只看该作者
全局:
fanzy 发表于 2016-3-21 10:23
是的,思路是这样,空间可以再优化

空间还能怎么优化啊?
回复

使用道具 举报

🔗
fanzy 2016-3-21 21:46:46 | 只看该作者
全局:
letsdoit666 发表于 2016-3-21 12:26
空间还能怎么优化啊?

我的idea是dp结构是二维数组n*size,每个entry存布尔值,dp结构算出来之后再backtracking算结果(bottom-up)。时间的话不知道相比你给的链接如何,虽然链接里的方法一步到位,但是算了很多没必要的entry,算单个entry的开销比我这个方法要大得多。
回复

使用道具 举报

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

本版积分规则

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