Python中可以用如下方式表示正負無窮:
float("inf"), float("-inf")
利用 inf 做簡單加、乘算術運算仍會得到 inf
>>> 1 + float('inf') inf >>> 2 * float('inf') inf
但是利用 inf 乘以0會得到 not-a-number(NaN):
>>> 0 * float("inf") nan
除了inf外的其他數除以inf,會得到0
>>> 889 / float('inf') 0.0 >>> float('inf')/float('inf') nan
通常的運算是不會得到 inf值的
>>> 2.0**2 4.0 >>> _**2 16.0 >>> _**2 256.0 >>> _**2 65536.0 >>> _**2 4294967296.0 >>> _**2 1.8446744073709552e+19 >>> _**2 3.4028236692093846e+38 >>> _**2 1.157920892373162e+77 >>> _**2 1.3407807929942597e+154 >>> _**2 Traceback (most recent call last): File "<stdin>", line 1, in ? OverflowError: (34, 'Numerical result out of range')
inf的運算規則遵從 IEEE-754 standard
不等式:
當涉及 > 和 < 運算時,
- 所有數都比-inf大
- 所有數都比+inf小
等式:
+inf 和 +inf相等
-inf 和 -inf相等
例子
給定一個整數數組 nums
,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。
def maxsum(nums): max_pre = -float('inf') max_cur = -float('inf') for i in nums: max_cur = max(max_cur + i, i) max_pre = max(max_pre, max_cur) return max_pre