![]() |
1
1
这里有一个没有按位运算(我不算常数生成,它们可以写出来,但会模糊其含义)或强制转换,正如你所看到的,它比应该的更复杂,如果没有Java 8,情况会更糟:
以这种方式实现其他最小/最大对可能是一件奇怪的事情。一种更合理的方法可能是只处理正数(在Java中)对范围长度的模,并将其上限解释为负数。 例如,如果范围为-2到2,则可以将它们全部置为0。。4通过将它们映射为模(实际的模,而不是Java风格的余数)5。然后,通常的mod-5算法将合理运行。最后,通过将4解释为-1(在mod-5算法中,这是一个合理的说法)和3解释为-2,将它们映射回原始范围。
您可以将上面的代码解释为这样做,但有一个奇怪的问题(由于涉及的范围),它必须像处理无符号数字一样处理有符号数字,所以
|
![]() |
2
0
一个解决方案是将数字转换为
|