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

GUGE面筋

全局:

2018(1-3月) 码农类General 硕士 全职@google - 内推 - 技术电面  | | Other | 应届毕业生

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

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

x
刚出炉的面筋,leetc
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
,求过求人品

评分

参与人数 1大米 +3 收起 理由
5919393 + 3 感谢分享!

查看全部评分


上一篇:Intuit 视频二面
下一篇:Coinbase onsite
🔗
richarddia 2017-10-21 01:01:59 | 只看该作者
全局:
是求右边比当前数大的有几个吗?
回复

使用道具 举报

🔗
xavierliu 2017-10-21 16:15:07 | 只看该作者
全局:
对啊 是求右边比当前大的有几个吗
回复

使用道具 举报

🔗
 楼主| 天长帝9 2017-10-23 04:07:42 | 只看该作者
全局:
xavierliu 发表于 2017-10-21 16:15
对啊 是求右边比当前大的有几个吗

是的,i:0-n时index大于i且值大于num[i]的个数
回复

使用道具 举报

🔗
clould365 2017-10-23 06:46:45 | 只看该作者
全局:
这个题除了用bst还有其他办法吗
回复

使用道具 举报

🔗
石之冬静 2017-10-23 07:34:21 | 只看该作者
全局:
感觉这道题好难,没做过的妥妥👻
回复

使用道具 举报

🔗
clould365 2017-10-23 07:35:21 | 只看该作者
全局:
bst解法:

  1. class BSTNode(object):
  2.     def __init__(self, val):
  3.         self.left = None
  4.         self.right = None
  5.         self.val = val
  6.         self.cnt = 1
  7.         self.rightTreeSize = 0

  8. class BST(object):
  9.     def __init__(self):
  10.         self.root = None

  11.     def insert(self, root, target):
  12.         if self.root is None:
  13.             self.root = BSTNode(target)
  14.             return None

  15.         if root is None:
  16.             return BSTNode(target)
  17.         if root.val == target:
  18.             root.cnt += 1
  19.         elif root.val < target:
  20.             root.right = self.insert(root.right, target)
  21.             root.rightTreeSize += 1
  22.         else:
  23.             root.left = self.insert(root.left, target)
  24.         return root

  25.     def search_count(self, root, target):
  26.         if root is None:
  27.             return 0
  28.         if root.val == target:
  29.             return root.rightTreeSize
  30.         elif target > root.val:
  31.             return self.search_count(root.right, target)
  32.         else:
  33.             return root.cnt + root.rightTreeSize + self.search_count(root.left, target)

  34.     def serilize(self):
  35.         def helper(root, ret):
  36.             if root is None:
  37.                 ret.append('#')
  38.                 return
  39.             ret.append(root.val)
  40.             helper(root.left, ret)
  41.             helper(root.right, ret)
  42.             return
  43.         ret = []
  44.         helper(self.root, ret)
  45.         return ret


  46. def Greater(nums):
  47.     if len(nums) == 0:
  48.         return []


  49.     tree = BST()
  50.     ret = []

  51.     for n in nums[::-1]:
  52.         tree.insert(tree.root, n)
  53.         ret.append(tree.search_count(tree.root, n))
  54.     return ret[::-1]

  55. print Greater([1,2,2,3,4,5])
  56. print Greater([1,1,1])
  57. print Greater([3,2,1])
  58. print Greater([1,2])
复制代码
回复

使用道具 举报

🔗
zhanglixue 2018-1-23 02:48:32 | 只看该作者
全局:
segment tree. 先扫描一遍,设置root的区间,然后依次往里面插入节点。
回复

使用道具 举报

🔗
kenteng 2018-1-23 03:47:19 | 只看该作者
全局:
最优做法是merge sort,保证可以O(nlogn),其他都不能保证。BST, segment tree or BIT的做法也可以nlogm,但是m是max - min。

不过说实话,这题目没做过一定挂(当然要求是时间复杂度为nlogn)。而且电面面这种题目很坑人啊,没办法画图帮助思考和解释。
回复

使用道具 举报

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

本版积分规则

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