码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode1053

时间:2019-05-26 13:15:15      阅读:99      评论:0      收藏:0      [点我收藏+]

标签: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行。

leetcode1053

标签:ret   代码   rev   位置   sel   return   pre   span   and   

原文地址:https://www.cnblogs.com/asenyang/p/10925611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!