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

一道某搜索公司的onsite题

全局:

2017(10-12月) 码农类General 硕士 全职@google - 内推 - Onsite  | | Other | 应届毕业生

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

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

x
其他都是lc原题/地里今年的面经题
只有一道题之前从来没见过,发出来分享一下

用一个二维矩阵表示一个城市, 每个cell代表的是一栋楼的高度
例如
2 1 1
1 1 1
1 1 1

然后给两个数列 一个代表这个城市的主视图 一个代表这个城市的左视图
比如这个题的例子就是[2,1,1]和[2,1,1]
Q:现在只知道这个城市的主视图和
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
阴沟翻船眼泪掉下来哭晕在厕所
---------------------------
发个面经求大米oooorz 还要面别的家TAT
人生不易 至今没offer 好想脱坑


评分

参与人数 7大米 +29 收起 理由
bombersun + 5 给你点个赞!
siranjoy119 + 5 很有用的信息!
kjkwang123 + 5 加油!
crazymarbury + 3 +++
YHYbrilliant123 + 5 给你点个赞!

查看全部评分


上一篇:Rubrik昂赛莫名挂
下一篇:Rubrik面经总结基本都在这儿了
推荐
chenxiaocong 2017-11-23 23:59:37 | 只看该作者
全局:
我的想法是,
1.把主视图由低到高排序,得到一个数组heights,然后再存一个sums数组,每一位是相对应heights的rolling sum,即高度小于等于某个值的高度总和 (这一步是o(nlogn), n是边长),同时做个处理,每个sum加上还没算进去的heights个数乘当前height (类似于补全后面比他高的建筑物)
2.扫一遍左视图,每一次找当前左视图里高度在主视图的rank,然后找相对应的sum,加起来,即最后结果

举个栗子:
左视图[5,5,3], 主视图[5, 3, 1]。 先排序主视图得[1, 3, 5], sums是[3, 7, 9] (例如7是1+3+3), 所以最后最大总体积/高度是 9+9+7=25

欢迎指正 这道题还挺有意思的
回复

使用道具 举报

推荐
GardenAAA 2017-11-23 23:05:19 | 只看该作者
全局:
楼主是妹子吗,妹子的题还是会平和一些。我上周去的onsite,难度简直爆炸。
回复

使用道具 举报

推荐
zhanglixue 2018-2-21 02:32:11 | 只看该作者
全局:
这道题是这样的吧:
给俩数组 A[a1, a2, a3, a4], B[b1, b2, b3, b4, b5]; A, B中任取一个元素,取其中的最小值加入到结果中去 sum += (a, b). a belongs to A, b belongs to B
从头到尾遍历这俩数组,如果A[i] <= B[j], 那么A[i] 和 B[j] 及其以后元素都不用比较了,直接A[i] 胜出。改了一下楼上的代码:
public static int cal(int[] leftView, int[] mainView) {
        Arrays.sort(leftView);
        Arrays.sort(mainView);
        int res = 0, left = 0, main = 0;
        int m = leftview.length, n = mainView.length;
        while(left<m && right<n) {
                if(leftView[left]<=mainView[right]) {
                        res += leftView[left]*(n - right);
                        ++left;
                } else {
                        ret += mainView[main]*(m - left);
                        ++main;
                }
        }
        return res;
}

评分

参与人数 1大米 +5 收起 理由
tobebeyond + 5 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
wjwmichael 2017-11-23 22:51:35 | 只看该作者
全局:
请问如何做到O(nlgn)的 只想到计算每个位置可以取的楼层高度的最大值然后相加
回复

使用道具 举报

🔗
fledgling 2017-11-24 01:56:04 | 只看该作者
全局:
chenxiaocong 发表于 2017-11-23 23:59
我的想法是,
1.把主视图由低到高排序,得到一个数组heights,然后再存一个sums数组,每一位是相对应heigh ...

这样很好,支持层主,感恩楼主。
回复

使用道具 举报

🔗
crackinterview 2017-11-24 03:01:56 | 只看该作者
全局:
请问一下啥叫主视图?
回复

使用道具 举报

🔗
 楼主| 15daysleft 2017-11-24 06:36:33 | 只看该作者
全局:
chenxiaocong 发表于 2017-11-23 23:59
我的想法是,
1.把主视图由低到高排序,得到一个数组heights,然后再存一个sums数组,每一位是相对应heigh ...

你这个做法是对的 也是当时我最先想出来的做法
然后面试官说还可以继续优化到不需要sum数组。。我当时就崩溃了

然后发现你还可以给左视图也排个序
你对每个左视图扫对应的主视图的时候 因为左视图是递增的 所以主视图只用一直向右扫就可以了
也不需要sum数组了 维护一个左边的和的常数就行了

这道题确实挺有意思的(还好是bonus  要不然原地爆炸了
回复

使用道具 举报

🔗
yrfzh 2017-11-24 06:47:47 | 只看该作者
全局:
15daysleft 发表于 2017-11-24 06:36
你这个做法是对的 也是当时我最先想出来的做法
然后面试官说还可以继续优化到不需要sum数组。。我当时就 ...

楼主还是好厉害啊
回复

使用道具 举报

🔗
 楼主| 15daysleft 2017-11-24 06:51:53 | 只看该作者
全局:
yrfzh 发表于 2017-11-24 06:47
楼主还是好厉害啊

向脸书大佬低头!
回复

使用道具 举报

🔗
yrfzh 2017-11-24 06:53:08 | 只看该作者
全局:
15daysleft 发表于 2017-11-24 06:51
向脸书大佬低头!

我太水了。。。。
回复

使用道具 举报

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

本版积分规则

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