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

11/10 脸书全职挂经 非leetcode题!!!!!!!!!!

全局:

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

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

x


白人小哥 直接做题 hello都没说 给一个array 比如 [9,9,5,3,3,7,1] 里面的数字都是0到9之间 inclusive 给你个k 给出top k largest number sum

比如 top 3 = 9+9+7

讨论就讨论了20分钟 我先说用priorityqueue 扫一
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
了一下要用bucket sort或radix sort。。 哪位大神来解释一下。。。

找工作不容易 求问犬只挂了还能申请实习吗 换个名字邮箱有用吗。。

上一篇:小众squarespace + databricks 面经
下一篇:高盛Goldman Sachs OA机经

本帖被以下淘专辑推荐:

推荐
abcd1997 2017-11-11 13:40:58 | 只看该作者
全局:
如果都用heap的话 add n次 + poll k次 复杂度是nlogn + klogn = (n + k)logn

如果用bucket sort n个元素排序是 n, 拿k个出来是常数复杂度, 因为只有0-9十个数字 所以复杂度是n

public int topkSum(int[] nums, int k) {
        int[] counter = new int[10];
        for(int num : nums) {
            counter[num - 0]++;
        }
        int kSum = 0, remain = k;
        for(int i = 9; i >= 0 && remain > 0; i--) {
            if(remain >= counter[i]) {
                kSum += counter[i] * i;
                remain -= counter[i];
            } else {
                kSum += remain * i;
                break;
            }
        }
        return kSum;
    }
回复

使用道具 举报

推荐
cutehuazai 2017-11-12 02:41:01 | 只看该作者
全局:
woshilindan 发表于 2017-11-11 16:37
对在哪里 不是跟priorityqueue做法一样的吗 都要先遍历原数组一遍 如果原数组1有1 million个不是很浪费时 ...

我问你如果k非常大,你的pq空间复杂度是多少。你的时间复杂度也是nlogk。k很大就几乎nlogn了。用array空间是常数,时间复杂度是o(n)。
回复

使用道具 举报

🔗
ls2882177 2017-11-11 13:42:46 | 只看该作者
全局:
小哥的意思是不是你用pq太费空间了?
你只用array记录然后直接根据k返回结果就可以了。
比如test case是{9,9,5,3,3,7,1},对应的array就是{0,1,0,2,0,0,0,1,0,2}
k=3从大往小返回就可以了,先是2个9,然后没有8,然后1个7
回复

使用道具 举报

🔗
cutehuazai 2017-11-11 13:47:46 | 只看该作者
全局:
楼主后来的做法是对的呀
回复

使用道具 举报

🔗
CinL 2017-11-11 14:02:34 | 只看该作者
全局:
所以这题不是leetcode那道top k largest number?只是从求top k largest numbers 变成求top k largest numbers的sum了吧?道理不应该还是那个道理么。先count frequency存到hashmap里,然后bucket sort hashmap values,然后求top k的sum。是我哪里没想到吗?

补充内容 (2017-11-11 18:18):
啊看错题了_(:з」∠)_
确实不是leetcode题。不好意思。
回复

使用道具 举报

🔗
HNAKXR 2017-11-11 14:17:40 | 只看该作者
全局:
0-9之间这么小的范围算是挺明显的bucket或者radix sort暗示了吧,算法课只要讲到基本都会这么考,当然counting sort也行啊
回复

使用道具 举报

🔗
oio14644 2017-11-11 15:14:55 | 只看该作者
全局:
这是面经原题, 之前 mitbbs 报过
回复

使用道具 举报

🔗
qwerty940828 2017-11-11 15:30:21 | 只看该作者
全局:
同问,fb全职挂了还能投实习么?
回复

使用道具 举报

🔗
 楼主| inspration 2017-11-11 16:36:07 | 只看该作者
全局:
ls2882177 发表于 2017-11-11 13:42
小哥的意思是不是你用pq太费空间了?
你只用array记录然后直接根据k返回结果就可以了。
比如test case是{ ...

priorityqueue和array不都是一样的复杂度?到要先扫一遍???
回复

使用道具 举报

🔗
 楼主| inspration 2017-11-11 16:37:49 | 只看该作者
全局:
cutehuazai 发表于 2017-11-11 13:47
楼主后来的做法是对的呀

对在哪里 不是跟priorityqueue做法一样的吗 都要先遍历原数组一遍 如果原数组1有1 million个不是很浪费时间???
回复

使用道具 举报

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

本版积分规则

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