如何使用溢出/覆盖值、模数找到 2 个值的差异
Posted
技术标签:
【中文标题】如何使用溢出/覆盖值、模数找到 2 个值的差异【英文标题】:How to find the difference of 2 values with overflow / overwrap values, modulus 【发布时间】:2014-02-24 23:49:27 【问题描述】:假设我有来自 0,1,2,3,4,5
的 5 个含义值的限制
与(5 to 0)
或(5 to 0)
的区别是1
与(5 to 1)
或(1 to 5)
的区别是2
与(0 to 4)
或(4 to 0)
的区别是2
我似乎理解这一点的方式是仅在任何值中使用最后一个值或第一个值时才使用覆盖差异。除此之外,与Math.abs
一起使用的正常应该没问题
如Math.abs(1-3)
与(1 to 3)
的区别是2
与(3 to 4)
的区别是1
我似乎无法理解如何对覆盖差异部分进行编程。
我试过了,但没什么特别的,我认为有模数运算符的东西会起作用,但我似乎无法弄清楚
int value_one = 0;
int value_two = 5;
int answer = Math.abs(value_one - value_two);
answer = (((answer % 5) + 5) % 5) + 1;
System.out.println(answer);
int answer2 = (value_one + value_two) % 5;
System.out.println(answer2);
【问题讨论】:
【参考方案1】:int v1 = Math.min(value_one, value_two);
int v2 = Math.max(value_one, value_two);
int answer = Math.min(v2 - v1, v1 + values.length - v2);
其中 values.length 是 0, 1, 2, 3, 4, 5 的长度,即 6。
【讨论】:
谢谢,太好了。以上是关于如何使用溢出/覆盖值、模数找到 2 个值的差异的主要内容,如果未能解决你的问题,请参考以下文章
JAVA编程中,如何求2维数组中最大的K个值,并且记录K个值的位置?
如何使用具有超过8个值的System.HashCode.Combine?