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

Pocket Gems面经题求助

🔗
 楼主| xiuluoxn 2016-12-29 04:02:18 | 只看该作者
全局:
reboot329 发表于 2016-12-28 23:23
我是按每种东西的最大数量打包,不够的也打成一个包。PQ存包,comparator按照包里的总价值,然后就是k larg ...

没错,这样就可以简化成top k的缩减版了
回复

使用道具 举报

🔗
zws1818918 2017-1-17 19:19:03 | 只看该作者
全局:
xiuluoxn 发表于 2016-12-28 17:05
突然想到heap的优化了, 你的code复杂度是O(k*n), 相对于每个slot, worst case要遍历整个items(或余下的) ...

想请问下楼主,heap的做法为什么是nlog(k)呢?
回复

使用道具 举报

🔗
allenxn24 2017-1-18 03:56:40 | 只看该作者
全局:
遍历整个数组是n (item 个数), 遍历同时维护k size的heap是log(k). 所以我觉得是nlog(k).
回复

使用道具 举报

🔗
CSIYI 2017-6-29 03:12:59 | 只看该作者
全局:

  1. public static int maxValue(int n, String[] stuff, item[] items ){
  2.         Map<String, Integer> cntMap = new HashMap<String,Integer>();
  3.         for(String s:stuff){
  4.             cntMap.put(s,cntMap.getOrDefault(s,0)+1);
  5.         }
  6.         PriorityQueue<Integer> maxHeap =
  7.                          new PriorityQueue<>((x,y)->(y-x));
  8.         Map<String, item> itemMap = new HashMap<String, item>();
  9.         for(item i: items){
  10.             itemMap.put(i.name, i);
  11.         }
  12.         
  13.         for(String key: cntMap.keySet()){
  14.             int amt = cntMap.get(key);
  15.             int maxStack = itemMap.get(key).max_stack;
  16.             int value = itemMap.get(key).value;
  17.             if(amt>maxStack){
  18.                 maxHeap.add(value*maxStack);
  19.                 maxHeap.add(value*(amt-maxStack));
  20.             }else{
  21.                 maxHeap.add(value*amt);
  22.             }
  23.             
  24.         }
  25.         int t=0, rlt = 0;
  26.         while(t<n){
  27.             rlt+=maxHeap.poll();
  28.             t++;
  29.         }
  30.         return rlt;
  31.         
  32.     }
复制代码
回复

使用道具 举报

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

使用道具 举报

🔗
zzzShxin 2018-1-2 05:18:02 | 只看该作者
全局:

maxHeap.add(value*(amt-maxStack));
这一句是不是有问题啊 amt-maxStack有可能依然大于maxStack,那么就不可以放入堆中吧
回复

使用道具 举报

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

本版积分规则

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