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

houzz 面经

全局:

2022(1-3月) 码农类General 硕士 全职@houzz - Other - Onsite  | 😃 Positive 😐 Average | Pass | 在职跳槽

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

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

x
Redis shards adjustment.

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

评分

参与人数 1大米 +5 收起 理由
匿名用户-JMH7H + 5

查看全部评分


上一篇:evernote Data Team onsite
下一篇:aurora onsite
地里匿名用户
🔗
匿名用户-GLXHX  2022-5-19 14:07:33
谢谢楼主分享。
请问一下total slots是题里给的已知条件还是需要iterate 整个list 去得出来的?
我就只想到了BF了,第一遍遍历得到total 和均值, 然后二遍去找低的,然后第三遍去找高的。
不知道有没有更好的办法?
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-GLXHX  2022-6-9 08:38:45
这题好难啊,怎么做啊
回复

使用道具 举报

🔗
 楼主| Chasedream.df 2023-1-9 02:53:55 | 只看该作者
全局:
  1. def rebalance(slots):
  2.   # calculate the average number of slots per server
  3.   avg_slots = sum(slots.values()) / len(slots)
  4.   # store the slots that need to be moved
  5.   moves = []
  6.   # for each server
  7.   for server, num_slots in slots.items():
  8.     # if the server has more slots than the average
  9.     if num_slots > avg_slots:
  10.       # calculate the number of extra slots
  11.       extra_slots = num_slots - avg_slots
  12.       # divide the extra slots evenly among the other servers
  13.       for target_server, target_slots in slots.items():
  14.         # skip the current server
  15.         if target_server == server:
  16.           continue
  17.         # calculate the number of slots to move
  18.         move_slots = min(extra_slots, avg_slots - target_slots)
  19.         # add the move to the list of moves
  20.         moves.append((server, target_server, move_slots))
  21.         # update the number of slots for the current server and target server
  22.         slots[server] -= move_slots
  23.         slots[target_server] += move_slots
  24.         # decrease the extra slots by the number of slots moved
  25.         extra_slots -= move_slots
  26.   return moves

  27. # example input
  28. slots = {
  29.   "A": 5000,
  30.   "B": 5000,
  31.   "C": 6384
  32. }

  33. print(rebalance(slots))
  34. # Output: [(C, A, 461), (C, B, 461)]
  35. # After the rebalance: A has 5461 slots, B has 5461 slots, C has 5462 slots
复制代码
回复

使用道具 举报

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

本版积分规则

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