leetcode題目鏈結
題目要求:求比當前排序大的排序(最接近)
舉例(1)13156-》13165
(2)13152-》13215
(3)24321-》31224
class
solution
:def
nextpermutation
(self, nums: list[
int])-
>
none
:"""
do not return anything, modify nums in-place instead.
"""numslen =
len(nums)
i = numslen-
1#找到第乙個當前元素比前面的元素要大的下標
while i>0:
if nums[i]
<=nums[i-1]
: i-=
1#不能一直迴圈,需要退出
else
:break
# print(i,"i")
#如果當前排序就是最大的,返回最小排序
if i ==0:
nums.sort(
)else
:#從後往前找第乙個大於nums[i-1]的值
j = numslen-
1while
true
:if nums[j]
>nums[i-1]
:break
j-=1#交換
t = nums[i-1]
nums[i-1]
= nums[j]
nums[j]
= t #排序
temp2 = nums[i:
] temp2.sort(
) nums[i:
]= temp2
leetcode 31 下乙個排列
實現獲取下乙個排列的函式,演算法需要將給定數字序列重新排列成字典序中下乙個更大的排列。如果不存在下乙個更大的排列,則將數字重新排列成最小的排列 即公升序排列 必須原地修改,只允許使用額外常數空間。以下是一些例子,輸入位於左側列,其相應輸出位於右側列。1,2,3 1,3,2 3,2,1 1,2,3 1...
leetCode 31 下乙個排列
思路就是找到可以變大的最低位,進一步說,就是找到,nums pos 滿足,存在q使得,q pos 且 nums pos nums q 同時要注意的是,最終的答案要取q的下界。這是因為要找剛剛好比所給數字大的數字,所以我們要使得pos位,增大的盡量小。class solution else if nu...
LeetCode31 下乙個排列
實現獲取下乙個排列的函式,演算法需要將給定數字序列重新排列成字典序中下乙個更大的排列。如果不存在下乙個更大的排列,則將數字重新排列成最小的排列 即公升序排列 必須原地修改,只允許使用額外常數空間。以下是一些例子,輸入位於左側列,其相應輸出位於右側列。1,2,3 1,3,2 3,2,1 1,2,3 1...