我是这样的。先是数字从小到大排序。要堆的数量少,就要求每个堆的数量尽量大。能分成的堆肯定是相邻连续的,不可能交叉跨着分配。这些堆的间隙肯定大于x,此时可以计算出每个间隙的最少填充数。 例如 1  2  3  7 9,x=3。很显然间隙在3和7之间,(7-3)/x == 1,所以这个间隙用一个积木就可以填充。如果这个间隙的大小是x的整数倍,那么要求的数要-1。比如3与9差距为6, 6/3==2,但实际上只需要一个数字就可以填充这个间隙。 把所有堆之间的间隙算出来,从小到大用k去减,尽量填充间隙。每填充一个间隙就减少一个堆,最后的结果就是 一开始堆的数量 - 填充间隙的数量