题目

给你一个整数 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中等题之重排数字的最小值相关推荐

  1. LeetCode 2165. 重排数字的最小值(计数)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 num .重排 num 中的各位数字,使其值 最小化 且不含 任何 前导零. 返回不含前导零且值最小的重排数字. 注意,重排各位数字后,nu ...

  2. LeetCode中等题之TinyURL 的加密与解密

    题目 TinyURL 是一种 URL 简化服务, 比如:当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL h ...

  3. LeetCode中等题之最优除法

    题目 给定一组正整数,相邻的整数之间将会进行浮点除法操作.例如, [2,3,4] -> 2 / 3 / 4 . 但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级.你需要找出怎么添加括 ...

  4. LeetCode简单题之猜数字大小

    题目 猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了. 你可以通过调用一个预先 ...

  5. LeetCode中等题之区域和检索 - 数组可修改

    题目 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nu ...

  6. LeetCode中等题之二倍数对数组

    题目 给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 "对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 ...

  7. LeetCode中等题之简易银行系统

    题目 你的任务是为一个很受欢迎的银行设计一款程序,以自动化执行所有传入的交易(转账,存款和取款).银行共有 n 个账户,编号从 1 到 n .每个账号的初始余额存储在一个下标从 0 开始的整数数组 b ...

  8. LeetCode中等题之在排序数组中查找元素的第一个和最后一个位置

    题目 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 进阶: 你可以 ...

  9. LeetCode中等题之煎饼排序

    题目 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr.length 反转子数组 arr[0- ...

最新文章

  1. CountDownLatch 源码分析
  2. 给自己的Blog 上添加定制的搜索引擎
  3. g menu i meun_长沙话读“这里”,到底是阁(gó)里还是该(gái)里
  4. 超好看的科学科普书,孩子大人都可以看!
  5. Python逐行读取文件内容
  6. VS2013在Release情况下使用vector有时候会崩溃的一个可能原因
  7. Linux一个驱动管理多个设备,poll方法(select多路监控原理与实现)
  8. BUAA OO 2019 第三单元作业总结
  9. GitHub Star 破万!3w 多人追更,这个 Java 框架你不会还不知道怎么用吧...
  10. numpy 高阶函数 —— np.histogram
  11. [Swift]LeetCode1049.最后一块石头的重量 II | Last Stone Weight II
  12. 数据结构c语言pdf2007,数据结构(C语言)严蔚敏 吴伟明 编著 07.pdf
  13. 自定义圆形进度条ProgressBar
  14. Linux下rpm安装git
  15. [.NET] 使用 .NET Framework 開發 ActiveX Control
  16. 再说“两本交换机图书内容完全不一样”
  17. wapp HTTP Error 404. The requested resource is not found.
  18. pmp考试有题库么?
  19. uni-app项目(一)
  20. SylixOS -- KN_SMP_WMB()内存屏障函数解析

热门文章

  1. c/c++ 如何输入带空格的字符串
  2. mapreduce理解_大数据
  3. GPU版TensorFlow怎么指定让CPU运行
  4. SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)
  5. VTA:深度学习加速器堆栈
  6. 自动驾驶仿真分析,提高研发效率
  7. 使嵌入式系统调试更容易:有用的硬件和软件提示
  8. Mybatis获取参数值的方式
  9. CentOS7下安装nvm
  10. Python 判断当前数值的类型(比如x=10 获取x的类型)