我需要拥挤工作所需的算法。问题:用户给出一个整数作为输入。我们必须在一定范围内选择最接近的离散“增量”。假设0始终是可接受的返回值。我们还有最大值和最小值。
因此,如果min为-5,max为5,增量为5,则可接受的返回值为-5,0,5。如果输入超过max,我们只返回max,如果低于min,我们只返回分钟。例如,如果输入为“3”,则返回值为5,因为这是最接近3的增量。
以下代码是否涵盖所有案例?
int findClosestIncrement(int input)
{
int min = getMin();
int max = getMax();
//delta is the "increment"
int delta = getDelta();
if(input <= min)
return min;
if(input >= max)
return max;
return Math.round( (float) input / float (delta) ) * delta;
}
同样,这是一个现实世界的问题。