R3-字符串
思路:
0-10直接返回-1得了
然后尽量倒数后两位的数值,查看是否变大,再逆序,怎么有点像指针?。
class Solution:
def nextGreaterElement(self, n: int) -> int:
def nextMax(nums):
n=len(nums)
index=-1
for i in range(n-2,-1,-1):
if nums[i]<nums[i+1]:
index=i
break
if index==-1:
nums.reverse()
return nums
#找第一个比爆破位置数字大的数字,并交换
for i in range(n-1,index,-1):
if nums[i]>nums[index]:
nums[i],nums[index]=nums[index],nums[i]
break
#除了爆破位置数字,后面的都要逆序
left,right=index+1,n-1
while left<right:
nums[left],nums[right]=nums[right],nums[left]
left+=1
right-=1
return nums
MAX=2147483647
#将数字变为列表来使用
nums=list(map(int,list(str(n))))
ret=int("".join(map(str,nextMax(nums))))
if ret<=MAX and ret>n:
return ret
else:
return -1
ps:
#将数字变为列表来使用
nums=list(map(int,list(str(n))))
#将列表转换回数字
ret=int("".join(map(str,num)))
列表逆序
nums.reverse()
python交换数字
a,b=b,a
python逆序,也可以使用切片操作
#除了爆破位置数字,后面的都要逆序
left,right=index+1,n-1
while left<right:
nums[left],nums[right]=nums[right],nums[left]
left+=1
right-=1