有人可以解释为什么 max 函数在第一个场景中起作用,而不是在第二个场景中起作用吗?
首先有效:
class Solution(object):
def kidsWithCandies(self, candies, extraCandies):
"""
:type candies: List[int]
:type extraCandies: int
:rtype: List[bool]
"""
result = candies
maxCandies = max(candies)
for i in range(len(candies)):
maxCandie = candies[i] + extraCandies
if maxCandie >= maxCandies: # this is working as expected
result[i] = True
else: result[i] = False
return result
第二个不起作用:
class Solution(object):
def kidsWithCandies(self, candies, extraCandies):
"""
:type candies: List[int]
:type extraCandies: int
:rtype: List[bool]
"""
result = candies
#maxCandies = max(candies)
for i in range(len(candies)):
maxCandie = candies[i] + extraCandies
if maxCandie >= max(candies): # this is where it shows a boolean return
result[i] = True
else: result[i] = False
return result
如您所见,唯一的区别是在循环之前声明 Candies 列表的最大值。 糖果的输入可以是:candies = [4,2,1,1,1,2], extraCandies = 1
我尝试了两个版本,但我不知道为什么第二个版本与第一个版本不同
当您说
result = candies
时,现在 result
和 candies
正在引用 same 列表。 然后你通过 candies
变异 result[i] = True/False
。 然后,在 for
循环的下一次迭代中,max(candies)
可能会返回意外结果,因为列表包含 int
和 bool
的混合。