传说中的谷歌招聘委员会成员之一,从幕后走出来,教你学系统设计!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册
天天打游戏、照样领工资、还办H1B
这份工作你要不要?
把贵司招聘信息放这里
查看: 1393|回复: 6
收起左侧

散步近期面经:Lyft 电面 1 和电面 2

[复制链接] |试试Instant~ |关注本帖
godstears 发表于 2016-3-18 10:39:56 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 硕士 全职@Lyft - 内推 - 技术电面 |Other在职跳槽

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
电面1:
Question1:Find second largest element in a binary search tree (leetcode)
.鏈枃鍘熷垱鑷1point3acres璁哄潧Question2:
input:   [1, 2, 3, 4]
output: [24, 12, 8, 6]
The product of the all elements in the array except the current one (dp 2 array saving the cumulative product from beginning and from end)

电面2:
Quesion: Find the most frequent element in a binary search tree
left child <= root <= right child

不用任何数据结构,求大神指导

评分

1

查看全部评分

Ulu2005 发表于 2016-3-18 10:50:35 | 显示全部楼层
第二题如果most frequent element保证能出现次数 >= [n/2] 次的话,可以用majority element的方法做。不是的话,就求大神解答了。。
回复 支持 反对

使用道具 举报

 楼主| godstears 发表于 2016-3-18 11:00:23 | 显示全部楼层
Ulu2005 发表于 2016-3-18 10:50
第二题如果most frequent element保证能出现次数 >= [n/2] 次的话,可以用majority element的方法做。不是 ...

不是,不保证,这个recursion闹心呢
回复 支持 反对

使用道具 举报

 楼主| godstears 发表于 2016-3-18 11:25:58 | 显示全部楼层
自问自答,有朋友帮我想出来了,4 variable: mostFreEle, mostFreCount, curEle, curCount,然后inorder traversal,不断更新后两个variable, 如果遇到不一样的就更新前两个,和后两个
回复 支持 反对

使用道具 举报

nothingtrouble 发表于 2016-3-18 12:24:44 | 显示全部楼层
godstears 发表于 2016-3-18 11:25
自问自答,有朋友帮我想出来了,4 variable: mostFreEle, mostFreCount, curEle, curCount,然后inorder tra ...

inorder traversal肯定是正解,不过似乎可以更简单。定义一个countOfRootValue函数,就是count以当前节点为root的subtree里面有多少个节点跟它的值相同,那么左右child如果跟它一样,加上他们的结果,如果不一样,返回1, 因为此节点值唯一,同时更新最大值
  1. public int countOfRootValue(TreeNode root){. Waral 鍗氬鏈夋洿澶氭枃绔,
  2.         if(root==null) return 0; //null return 0 frequency
  3.         int count = 1; //Suppose root.val is always equal to root value. from: 1point3acres.com/bbs
  4.         int leftCount = countOfRootValue(root.left);
  5.         int rightCount = countOfRootValue(root.right);
  6.         if(root.left!=null && root.left.val==root.val) count+=leftCount; //left child is equal to root value, sum up its count
  7.         if(root.right!=null && root.right.val==root.val) count+=rightCount; //right child is equal to root value, sum up its count
  8.         if(maxc<count){
  9.                 maxc = count;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  10.                 maxv = root.val;
  11.         }
  12.         return count;
  13. }
复制代码
回复 支持 反对

使用道具 举报

cuiyang36 发表于 2017-6-29 16:30:23 | 显示全部楼层
请问一下电面2:
是不能用任何数据结构 还是 不能用任何extra space?不能用任何数据结构  -> 是指不能用例如stack 和 queue?
我感觉如果是:
1)不用任何数据结构,then recursive method, keep updating local, global max val
2 ) 不用任何extra space, morris inorder traversal (https://en.wikipedia.org/wiki/Tree_traversal#Morris_in-order_traversal_using_threading) with 4 params
如果是后者, Lyft电面有点DIAO啊。。。。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-9-26 17:32

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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