我试图在 leetcode 中求解一个和,我使用的代码是这个,但是它失败了一个测试用例,所以我在 IDLE 中尝试了它
ratings=[1,3,4,5,2]
left=[1]*len(ratings)
right=left
cnt=0
for i in range(1,len(ratings)):
if ratings[i]>ratings[i-1]:
left[i]=left[i-1]+1
print(left)
for i in range(len(ratings)-2,-1,-1):
if ratings[i]>ratings[i+1]:
right[i]=right[i+1]+1
print(right)
for i in range(0,len(ratings)):
print(max(left[i],right[i]))
预期输出:
[1,2,3,4,1]
[1,2,3,2,1]
1
2
3
4
1
但是我在idle和leetcode中得到的输出是:
[1,2,3,4,1]
[1,2,3,2,1]
1
2
3
2
1
()
如果我们不希望必须使用 right=left[:] 而不是 right=left,则仅使用“=”会使列表相互引用(当 1 更改时,另一个也会更改)