【下一个更大元素 III】python刷题记录

avatar
作者
猴君
阅读量:0

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

 

 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!