LeetCode中等题之重排数字的最小值
生活随笔
收集整理的這篇文章主要介紹了
LeetCode中等题之重排数字的最小值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給你一個整數 num 。重排 num 中的各位數字,使其值 最小化 且不含 任何 前導零。
返回不含前導零且值最小的重排數字。
注意,重排各位數字后,num 的符號不會改變。
示例 1:
輸入:num = 310
輸出:103
解釋:310 中各位數字的可行排列有:013、031、103、130、301、310 。
不含任何前導零且值最小的重排數字是 103 。
示例 2:
輸入:num = -7605
輸出:-7650
解釋:-7605 中各位數字的部分可行排列為:-7650、-6705、-5076、-0567。
不含任何前導零且值最小的重排數字是 -7650 。
提示:
-10^15 <= num <= 10 ^15
來源:力扣(LeetCode)
解題思路
??將數字按照不同的情況,拆分然后排序,接著進行重組。需要注意的地方就是最高位的數字不能是0,需要找到接下來不是0的數字進行替換。
class Solution:def smallestNumber(self, num: int) -> int:if num<0:num=-numtemp=[]while num>0:temp.append(num%10)num//=10temp.sort(reverse=True)q=len(temp)-1if temp[0]==0:for i in range(1,q+1):if temp[i]!=0:temp[0]=temp[i]temp[i]=0breaks=0for i in temp:s+=i*10**qq-=1return -selif num==0:return 0else:temp=[]while num>0:temp.append(num%10)num//=10temp.sort()q=len(temp)-1if temp[0]==0:for i in range(1,q+1):if temp[i]!=0:temp[0]=temp[i]temp[i]=0breaks=0for i in temp:s+=i*10**qq-=1return s
總結
以上是生活随笔為你收集整理的LeetCode中等题之重排数字的最小值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之完成一半题目
- 下一篇: LeetCode中等题之删除链表的中间节