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

狗 电面

全局:

2019(1-3月) 码农类General 硕士 合同工@google - 网上海投 - 技术电面  | | Other | 应届毕业生

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

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

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




上一篇:亚麻 三轮VO 面经
下一篇:吴伯店面

本帖被以下淘专辑推荐:

全局:

  1. import random
  2. class MusicPlayer:
  3.     def __init__(self,musics,K):
  4.         self.musics = musics
  5.         self.K = K
  6.         self.que_size = 0
  7.         self.head = 0
  8.         self.tail = -1

  9.     def getNext(self):
  10.         idx = random.randint(self.que_size,len(self.musics)-1)
  11.         music_selected = self.musics[idx]
  12.         if self.que_size < self.K:
  13.             self.que_size+=1
  14.             self.tail+=1
  15.             self.musics[idx],self.musics[self.tail] = self.musics[self.tail],self.musics[idx]
  16.         else:
  17.             self.musics[idx], self.musics[self.head] = self.musics[self.head], self.musics[idx]
  18.             self.tail = (self.tail+1)%self.K
  19.             self.musics[self.tail] = self.musics[self.head]
  20.             self.head = (self.head+1)%self.K
  21.         return music_selected


  22. mp = MusicPlayer(['A','B','C','D','E','G','H'],K=4)
  23. for i in range(20):
  24.     print(mp.getNext())
  25.     print(mp.musics)
复制代码


写了一个第二题,不知道有没有问题,求大大们帮把关
回复

使用道具 举报

全局:
第一题高频捌肆毵,第二题第一眼看了前段叙述还以为是玖贰零。。。设两个指针,一个是random的upper bound 一个是和抽到曲目对调的index,upper bound 在前K首往下降后面就都不变,另一个index一直往下降直到比第K大还小的时候再调回最后,也就是说把抽到的音乐往后仍,K次之后会再被换回可能抽到的区域这样就可以了吧
回复

使用道具 举报

🔗
aizoc 2019-4-5 07:33:49 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
 楼主| vivivic 2019-4-5 08:58:55 | 只看该作者
全局:
kaipeng21 发表于 2019-4-5 05:26
第一题高频捌肆毵,第二题第一眼看了前段叙述还以为是玖贰零。。。设两个指针,一个是random的upper bound  ...

应该对吧。。。
赞!
回复

使用道具 举报

🔗
 楼主| vivivic 2019-4-5 08:59:14 | 只看该作者
全局:
aizoc 发表于 2019-4-5 07:33
**** 本内容被作者隐藏 ****

我没有遇到呢
回复

使用道具 举报

🔗
umialpha 2019-4-5 15:25:06 | 只看该作者
全局:
kaipeng21 发表于 2019-4-5 05:26
第一题高频捌肆毵,第二题第一眼看了前段叙述还以为是玖贰零。。。设两个指针,一个是random的upper bound  ...

根据你说的应该指的是利用已有空间(队首或者队尾)维护一个循环队列吧。
回复

使用道具 举报

🔗
mmm_ 2019-4-7 23:12:52 | 只看该作者
全局:
请问第二题题目是什么啊?积分不够看不了。
回复

使用道具 举报

🔗
ziwei1992 2019-4-10 22:52:09 | 只看该作者
全局:
[quote]衫衫水水 发表于 2019-4-7 07:21

  1. import random
  2. class MusicPlayer:
  3. [/quote]
  4. 看了你的code, 不太能理解head, tail, que_size都是干啥的,不过应该是对的。附上我的版本,互相讨论哈
  5. [code]
  6.     class MusicPlayer():
  7.         def __init__(self, musics, K):
  8.             self.musics = musics
  9.             self.K = K
  10.             self.lower_bound = 0  # the lower bound for random selection from [lower_bound, -1]
  11.             self.oldest = 0 # the oldest song played, which can be added to the pool back for the next selection
  12.             
  13.         def getNext(self):
  14.             idx = random.randint(self.lower_bound, len(self.musics) - 1)
  15.             selected = self.musics[idx]
  16.             
  17.             if self.lower_bound < self.K:
  18.                 self.musics[idx], self.musics[self.lower_bound] = self.musics[self.lower_bound], self.musics[idx]
  19.                 self.lower_bound += 1
  20.             else:
  21.                 self.musics[idx], self.musics[self.oldest] = self.musics[self.oldest], self.musics[idx]
  22.                 self.oldest = (self.oldest + 1) % self.K
  23.             
  24.             return selected  
  25.         
  26.     ### driving code ###   
  27.    
  28.     mp = MusicPlayer(['A','B','C','D','E','G','H'], K = 4)
  29.     for i in range(20):
  30.         print(mp.getNext())
  31.         print(mp.musics)
  32.    
  33.     mp = MusicPlayer(['A','B','C'], K = 2)
  34.     for i in range(20):
  35.         print(mp.getNext())
  36.         print(mp.musics)
复制代码



补充内容 (2019-4-10 22:53):
看了你的code, 不太能理解head, tail, que_size都是干啥的,不过应该是对的。附上我的版本,互相讨论哈

评分

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

查看全部评分

回复

使用道具 举报

🔗
衫衫水水 2019-4-10 23:10:42 | 只看该作者
全局:
ziwei1992 发表于 2019-4-10 22:52
看了你的code, 不太能理解head, tail, que_size都是干啥的,不过应该是对的。附上我的版本,互相讨论哈
...

哈哈,其实跟你的方法差不多, 我是把数组前面的空间作为一个循环队列, que_size 就是这个意思
回复

使用道具 举报

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

本版积分规则

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