老实说,我已经待了好几天了。我已经实现了此功能的难点,但是现在只有一小件事。我要编写的方法是删除链接列表的blockSize的第N个块。因此,如果我有一个大小为7的字符串列表{1,2,3,4,5,6,7}N=2blockSize=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,因为您要么算一个块,要么不算。

10-04 20:53