leetcode1053
Posted asenyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode1053相关的知识,希望对你有一定的参考价值。
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行。
以上是关于leetcode1053的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1053. Previous Permutation With One Swap