提示:想想加法的性质。
错误版本:
class Solution:
def missingNumber(self, nums: List[int]) -> int:
max_num = 0
max_sum = 0
list_sum = 0
for i in nums:
if i > max_num:
max_num = i
list_sum += i
max_sum = int((max_num+1)*max_num/2)
return max_sum- list_sum
分析:忽略了两个隐含条件,1.数组包含0; 2.一定有一个确实的数字,可能是最大值。
正确版本:
class Solution:
def missingNumber(self, nums: List[int]) -> int:
if 0 not in nums:
return 0
else:
max_num = 0
max_sum = 0
list_sum = 0
for i in nums:
if i > max_num:
max_num = i
list_sum += i
max_sum = int((max_num+1)*max_num/2)
if max_sum == list_sum:
return max_num+1
else:
return max_sum- list_sum