LeetCode题目笔记——6359. 替换一个数字后的最大差值
创始人
2024-05-26 07:39:50
0

文章目录

    • 题目描述
    • 题目链接
    • 题目难度——简单
    • 方法一:替换
      • 代码/Python
      • 代码优化
    • 总结

题目描述

给你一个整数 num 。你知道 Danny Mittal 会偷偷将 0 到 9 中的一个数字 替换 成另一个数字。

请你返回将 num 中 恰好一个 数字进行替换后,得到的最大值和最小值的差位多少。

注意:

  • 当 Danny 将一个数字 d1 替换成另一个数字 d2 时,Danny 需要将 nums 中所有 d1 都替换成 d2 。
  • Danny 可以将一个数字替换成它自己,也就是说 num 可以不变。
  • Danny 可以将数字分别替换成两个不同的数字分别得到最大值和最小值。
  • 替换后得到的数字可以包含前导 0 。
  • Danny Mittal 获得周赛 326 前 10 名,让我们恭喜他。

 

示例 1:

输入:num = 11891
输出:99009
解释:
为了得到最大值,我们将数字 1 替换成数字 9 ,得到 99899 。
为了得到最小值,我们将数字 1 替换成数字 0 ,得到 890 。
两个数字的差值为 99009 。

示例 2:

输入:num = 90
输出:99
解释:
可以得到的最大值是 99(将 0 替换成 9),最小值是 0(将 9 替换成 0)。
所以我们得到 99 。

 

提示:

  • 1 <= num <= 108

题目链接

题目难度——简单

方法一:替换

  直觉来看,为了得到最大值,我们可以从左往右依次从高位看向地位,把第一个非9数字以及后面的相同数字替换为9就能得到最大值。同样,为了得到最小值,我们可以直接把最高位以及后面和最高位相同的数字都替换为0,就能得到最小值。这样做的前提是本题可以有前导0的存在。

代码/Python

class Solution:def minMaxDifference(self, num: int) -> int:nums = [int(x) for x in str(num)]tmp = nums.copy()tag = 0for n in nums:if n < 9:tag = nbreaknums = [9 if x == tag else x for x in nums]tag = 0for n in tmp:if n > 0:tag = nbreaktmp = [0 if x == tag else x for x in tmp]max_num = int(''.join([str(x) for x in nums]))min_num = int(''.join([str(x) for x in tmp]))return max_num - min_num

在这里插入图片描述
  再多看一眼代码,就会爆炸 ,可以发现有很多可以优化的地方,比如没必要一开始把原数转换成数字列表,完全可以直接用字符串,第二次的循环也没必要。优化一下,就变成:

代码优化

class Solution:def minMaxDifference(self, num: int) -> int:nums = str(num)tag = '0'for n in nums:if n < '9':tag = nbreakmaxx = nums.replace(tag, '9')minn = nums.replace(nums[0], '0')return int(maxx) - int(minn)

总结

  方法一时间复杂度O(N),空间复杂度O(N)。

相关内容

热门资讯

被欺骗的人最可怜,对吗? 被欺骗的人最可怜,对吗?要看哪种欺骗了,如果是善意的话不可怜,如果是恶意的话就可怜,但我想其实恶意骗...
《错爱2》大结局是怎样的? 《错爱2》大结局是怎样的? 《错爱2》结局是:新来老师气得找来班主任,班主任又找来路治平,路治平把小...
70岁著名演员任达华,收完麦子... 7月5日晚,中国香港著名演员任达华分享他在玉米地里的照片,配文“新秧已破黄金甲,更待满仓谢地恩”。上...
主要产油国8月将加快增产步伐 转自:千龙网新华社维也纳7月5日电(记者孟凡宇 于涛)石油输出国组织(欧佩克)5日发表声明说,欧佩克...
请问《清明上河图》的作者是谁? 请问《清明上河图》的作者是谁?张择端北宋的的张择端(1085年—1145年),字正道。汉族,琅邪东武...
叛逆的鲁鲁修和高达00有什么关... 叛逆的鲁鲁修和高达00有什么关系/?动漫重没关系,高达比叛出的早同一个公司制作,其他没关系同公司制作...
关于勇敢的短名人名言!! 关于勇敢的短名人名言!! 大海越是布满暗礁,越是以险恶出名,我越觉得通过重重危难寻求不朽是一件赏...
最能体现人性的故事有哪些? 最能体现人性的故事有哪些?刚刚下晚自习,我背着沉重的书包慢慢的往家走。路上行人很少,公路上汽车很多,...
孔明的性格特点 孔明的性格特点一句话可以概括:诸葛一生唯谨慎。  所谓鞠躬尽瘁死而后已,这是他最明显的特点。不过成也...
肠镜是怎么做的? 肠镜是怎么做的?要灌肠吗?今天我奶奶才做了肠镜 前一天晚上不要吃太多, 第二天早上7-8点,医院...