标签:ret 代码 rev 位置 sel return pre span and
1 class Solution: 2 def prevPermOpt1(self, A: ‘List[int]‘) -> ‘List[int]‘: 3 n = len(A) 4 for i in range(n-1,0,-1): 5 if A[i-1] > A[i]: 6 cur = A[i-1] 7 B = A[i:] 8 maxB = 0 9 maxIndex = i 10 for j in range(len(B)): 11 if cur > B[j] and B[j] >= maxB: 12 maxB = max(maxB,B[j]) 13 maxIndex = j 14 A[i-1],A[i+maxIndex] = A[i+maxIndex],A[i-1] 15 return A 16 return A
先寻找需要替换的项,从后向前寻找。如果前项>后项,那么这个“前项”就是要被替换的。
然后在这个项的右侧区域中寻找用于交换的位置。寻找比“前项”的值小的值中的最大的那个,同样的值选择位置靠后的。
关键的代码是10~13行。
标签:ret 代码 rev 位置 sel return pre span and
原文地址:https://www.cnblogs.com/asenyang/p/10925611.html