如何解决在列表名称 sub_num 中,python 中 sub_num = [*(sub_num[:]),i] 和 sub_num.append(i) 之间的区别是什么,应该首选什么
我正在尝试解决问题 bestSum,它基本上找到了与目标值相加的最小元素数量,以下似乎工作正常,仅当使用 sub_num = [*(sub_num[:]),i]
添加 {{1} } 到 i
列表而不是使用 sub_num
我知道一个正在使用 sub_num.append(i)
而另一个不是,但无论如何我希望使用 deepcopy
方法获得相同的结果
sub_num.append(i)
使用附加给我 memo = {}
def how_sum(n,numbers):
if(n in memo):
return memo[n]
elif(n == 0):
return []
elif(n < 0):
return None
shortestcombination = None
for i in numbers:
sub_num = how_sum(n-i,numbers)
if ( sub_num != None ):
memo[n]= sub_num[:]
sub_num.append(i) #<-commenting this line and
#sub_num = [*(sub_num[:]),i] <-uncommenting this would give me correct ans
if( (shortestcombination == None) or (len(sub_num) < len((shortestcombination)))):
shortestcombination = sub_num[:]
if(shortestcombination != None):
memo[n] = shortestcombination[:]
else:
memo[n] = None
return shortestcombination
print(how_sum(7,[7]))
memo.clear()
print(how_sum(100,[1,2,5,25]))# ans should be [25,25,25]
memo.clear()
作为输出而不是第二个测试用例的 [25,25]
但如果我使用 [25,25]
会得到正确的答案
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。