在下面的算法拼图上工作,它需要处理溢出的情况。我很困惑这一行,min(最大值(-2147483648,res),2147483647),如果有人可以评论它如何处理溢出,它会很棒。 :)
顺便说一句,我仍然很困惑为什么在进行两次整数除法计算时Python会出现溢出?发布详细的问题陈述和解决方案,
除了两个整数而不使用乘法,除法和mod运算符。
如果溢出,则返回MAX_INT。
DefaultKeyTypedAction
答案 0 :(得分:2)
min(max(-2147483648, res), 2147483647)
这是这两件事的组合:
result = max(-2147483648, res)
min(result, 2147483647)
函数max
和min
分别返回传递给它们的最大值和最小值。
如果是max()
来电,如果res
高于-2147483648
,则会返回res
的值。否则,如果数字较低,则返回该较大的负数。这可确保从max()
调用返回的最小数字为-2147483648
。如果res
更大,则更好,否则将该数字作为最低边界。
min()
电话完全相反。如果2147483647
大于它,则通过返回该数字来建立res
的最大边界。
合并后,这些函数调用确保-2147483648 <= res <= 2147483647
。
最后请注意,在Python中,整数的大小并不是很有限。所以这些边界只是在没有实际需要的情况下强制执行(至少对于Python而言),所以如果拼图解决方案需要它,那么这可能是拼图的要求。