查看: 1463| 回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

求助一道题,算法加上系统设计

全局:

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

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

x
最近遇到这样一个题目,想请大家集思广益,然后大神分享一些思路。

比如,现在有4个系统,编号s(0-3)。当有一个数字n产生的时候,用s=n%4来确定放在哪个系统中。(4为系统的总数)

现在有N个不是连续的数字(0,1,2,3,5,6,8,10,11,13,15,16,17,19,21),存在编号为0-3的系统中:
0: 0, 8 , 16,
1: 1, 5, 13, 17, 21
2: 2, 6, 10
3: 3,11, 15, 19

然后突然加入编号s为4,5的两个系统,那么就需要根据s=n%6来确定数字存放的位置。

那么系统就会变成
0: 0, 6
1: 1, 13, 19
2: 2, 8
3: 3, 15, 21
4: 10, 16
5: 5, 11, 17

每个系统只知道自己所拥有的数字,不知道别人的拥有的数字也不知道总共有多少个数字,但是知道总共有多少个系统。
从N个系统到N+2个系统,数字总数为n,最少的时间复杂度时多少?

ps:因为每个系统只知道自己拥有的数字和系统的总数,那么比如数字8从系统0移到系统2那么就必须系统0告诉系统2,我有一个8,需要放到你这里来,然后数字8从0移到2,这样的操作算o(1).

楼主觉得每个系统对自己所拥有的每个数字都要进行重新计算,对有多少个系统没关,所以认为复杂度是o(n)。

不知道是否正确,或者有没有人认为有更好的解法?



上一篇:Java 面试题求解
下一篇:求问LC 501
🔗
zwfn88 2017-4-2 03:18:17 | 只看该作者
全局:
的确是每个都需要重新计算,但问题是你的题目不是说只有需要迁移的数据才算是一次操作么,那么不需要迁移的就应该不算在答案里吧,所以我觉得面试官是不是问你一共有多少数据需要迁移啊?
如果是这样的话,基本就是找 N 和 N - 2的公倍数,然后从那个数开始的N-2个数不需要迁移,其他的都需要吧。比如开始机器是4,然后机器变6,那么从0-3,12-15,24-27,36-39.....这些数据都不需要迁移,其余的都需要。
回复

使用道具 举报

🔗
 楼主| sparksfly 2017-4-2 08:17:14 | 只看该作者
全局:
zwfn88 发表于 2017-4-2 03:18
的确是每个都需要重新计算,但问题是你的题目不是说只有需要迁移的数据才算是一次操作么,那么不需要迁移的 ...

谢谢你的回答,当时他希望得到的答案确实不是问哪些数需要移动,是希望得到能够使用最少的步骤能够完成移动。
回复

使用道具 举报

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

本版积分规则

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