class Solution:
def prevPermOpt1(self, arr: List[int]) -> List[int]:
l = -1
for i in range(len(arr)-1, -1, -1):
if arr[i-1] > arr[i]:
l = i - 1
break
if l == -1: return arr
ans = 0
r = -1
for i in range(l+1, len(arr)):
if arr[i] < arr[l] and arr[i] > ans:
ans = arr[i]
r = i
if r == -1:
return arr
arr[l], arr[r] = arr[r], arr[l]
return arr
class Solution:
def prevPermOpt1(self, arr: List[int]) -> List[int]:
l = -1
for i in range(len(arr)-1, -1, -1):
if arr[i-1] > arr[i]:
l = i - 1
break
if l == -1: return arr
for i in range(len(arr)-1, l, -1):
if arr[i] < arr[l] and arr[i] != arr[i-1]:
r = i
break
if r == -1:
return arr
arr[l], arr[r] = arr[r], arr[l]
return arr