注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
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)。
不知道是否正确,或者有没有人认为有更好的解法?
|