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

[其他] Google 电面 9 月 21 号

🔗
stellari 2015-9-23 09:58:26 | 只看该作者
全局:
JimLuo 发表于 2015-9-23 05:36
quick select是可以的,但是三哥面试官貌似要引导我写出桶排序,随后把题改成返回前K个最大的,还给出了 ...

如果数组里的数的范围只有0~100的话,counting sort就可以么。开一个长为101的数组M,扫第一遍时在M中记录下每个数字出现的次数。扫完以后倒着从M中数出K个数就行了。
回复

使用道具 举报

🔗
kelvinzhong 2015-9-23 10:16:04 | 只看该作者
全局:
其实就是个pocket gems常规题目 Top K frequent elements.
回复

使用道具 举报

🔗
lchen77 2015-9-23 21:31:10 | 只看该作者
全局:
superbinhugo 发表于 2015-9-23 05:19
这....C++各种奇技淫巧OTZ,复杂度是O(N)的话,linear search一遍,然后要怎么留住最大的前K个呢?用heap ...

C++库用的应该就是quick select, O(N)是只平均复杂度,算法导论上有证明,下面是我leetcode上的实现, 供参考:
int findKthLargest(vector<int>& nums, int k) {
        const int size_n = nums.size();
        int left = 0, right = size_n - 1;
        while (left <= right) {
            int i = left, j = right;
            int pivot = nums[left];
            while (i <= j) {
                while (i <= j && nums[i] >= pivot) i++;
                while (i <= j && nums[j] < pivot) j--;
                if (i < j) swap(nums[i++], nums[j--]);
            }
            swap(nums[left], nums[j]);
            if (j == k - 1) return nums[j];
            if (j > k - 1)  right = j - 1;
            else left = j + 1;
        }
        assert(false);
    }
回复

使用道具 举报

🔗
gp89757 2015-9-23 22:38:50 | 只看该作者
全局:
前k个可能quick select比较好 k会无穷大是干嘛用的
回复

使用道具 举报

🔗
stellari 2015-9-23 23:31:54 | 只看该作者
全局:
gp89757 发表于 2015-9-23 22:38
前k个可能quick select比较好 k会无穷大是干嘛用的

我估计“K无穷大”的意思是:“不能使用O(f(K))的额外空间”,也就是只能使用O(1)空间。可能是为了断掉楼主想的“用比较排序法”的念头。
回复

使用道具 举报

🔗
lizlingng 2015-9-24 01:45:16 | 只看该作者
全局:
JimLuo 发表于 2015-9-23 05:36
quick select是可以的,但是三哥面试官貌似要引导我写出桶排序,随后把题改成返回前K个最大的,还给出了 ...

罗总罗总,把三哥问的题目再稍微说详细一点?
他怎么从kth largest给你带到bucket sort这条沟里的……
回复

使用道具 举报

🔗
 楼主| JimLuo 2015-9-27 03:29:10 | 只看该作者
全局:
lll_2013 发表于 2015-9-26 23:12
楼主,能问问你是面new grad职位还是experienced职位嘛?我都担心自己连面试机会也没有。。。

New grad的职位,一般google投了就会有面试
回复

使用道具 举报

🔗
hkc593 2015-10-11 13:09:38 | 只看该作者
全局:
感觉面试官就是想引导LZ想一个O(n)时间复杂度和O(1)空间复杂度的算法。
回复

使用道具 举报

🔗
plutoman 2015-10-17 14:48:18 | 只看该作者
全局:
hkc593 发表于 2015-10-11 13:09
感觉面试官就是想引导LZ想一个O(n)时间复杂度和O(1)空间复杂度的算法。

感觉这阿三bucket sort 有点误导啊。或者他给了其他约束条件。。。
回复

使用道具 举报

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

本版积分规则

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