老实说,我已经待了好几天了。我已经实现了此功能的难点,但是现在只有一小件事。我要编写的方法是删除链接列表的blockSize的第N个块。因此,如果我有一个大小为7的字符串列表{1,2,3,4,5,6,7}
,N=2
,blockSize=2
,我想删除大小为blockSize(2)的每Nth(2nd)块,因此删除3,4,7。现在,为了使我的for循环起作用,我需要为创建的int值编写一个名为numBlocksRemoved的表达式。它计算要删除的块总数。在这种情况下,将为2。
numBlockRemoved=(size/blockSize)/N;
但是,这仅在数字看起来不错时才起作用。如果我有
size=8,N=2, blockSize=2
,那么我得到numBlockRemoved=2
,这是正确的。但是,对于上面的示例,我的int值为1,这是不正确的。我想要2.我已经想了很久了,这太荒谬了。我只是无法提出一个适用于numBlockRemoved的公式。有任何想法吗? 最佳答案
尝试
floor(ceil(size/blockSize)/N)
floor(ceil(7/2)/3) = 1
floor(ceil(7/2)/2) = 2
floor(ceil(8/2)/2) = 2
您拥有的块数:
blocks = ceil(size/blockSize)
ceil
,因为您不介意不完整的块。那么您跳过每N个,因此:
floor(blocks/N)
floor
,因为您要么算一个块,要么不算。