提问人:Hiya 提问时间:7/15/2023 最后编辑:trincotHiya 更新时间:7/15/2023 访问量:36
尽管 LeetCode 中最终变量的值正确,但输出不正确
Incorrect output despite correct value of final variable in LeetCode
问:
很抱歉,如果这是一个错误的平台,但我在 LeetCode 上找不到讨论选项卡,所以我认为这可能是最好的平台。
对于 LeetCode 上的下一个排列 (31) 问题,必须更改 nums 列表以反映下一个最大排列。[1,2,3] 至 [1,3,2,2]、[3,2,1] 至 [1,2,3] 和 [1,1,5] 至 [1,5,1] 等。此值不应由函数返回,而应就地更改。
现在,如果我使用 print 语句进行检查,我的代码会给出正确的输出,但由于某种原因,这并不总是正确反映在输出中,而且我无法弄清楚原因。
这是我的代码——
class Solution:
def nextPermutation(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
def recur(l,n,x):
a=l[n-x:n]
maxx=a[0]
ind=0
for i in range(1,x):
if a[i]>maxx:
temp=a[i]
a[i]=a[ind]
a[ind]=temp
return l[:n-x]+a
if x==n-1:
l.sort()
return l
return recur(l,n,x+1)
nums=recur(nums,len(nums),2)
由于父级(或代码)不包含在 LeetCode 中,因此我假设访问了 nums 变量的最后一个值,这应该可以工作。__main__
有几个类似的问题,显然这个问题与全局变量和静态变量有关,老实说我不明白,所以我认为使用 for 循环而不是递归函数来做可能会消除任何与变量名称相关的问题。但是下面的代码也有同样的问题。
for x in range(2,n):
a=nums[n-x:n]
maxx=a[0]
ind=0
for i in range(1,x):
if a[i]>maxx:
temp=a[i]
a[i]=a[ind]
a[ind]=temp
nums=nums[:n-x]+a
t=True
break
if t:
break
else:
nums.sort()
答: 暂无答案
评论
nums
[1,3,2]
nums[:] =
nums =