当前位置: 首页 > web >正文

替换一个数字后的最大差值

文章目录

    • 题目
    • 思路
    • Python代码
    • C代码
    • 复杂度

题目

给你一个整数 num 。你知道Danny Mittal 会偷偷将0到9 中的一个数字 替换成另一个数字。
请你返回将 num 中 恰好一个 数字进行替换后,得到的最大值和最小值的差为多少。

注意:

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

提示:

  • 1 <= num <= 108
示例 1:
输入:num = 11891
输出:99009
解释:
为了得到最大值,我们将数字 1 替换成数字 9 ,得到 99899 。
为了得到最小值,我们将数字 1 替换成数字 0 ,得到 890 。
两个数字的差值为 99009 。示例 2:
输入:num = 90
输出:99
解释:
可以得到的最大值是 99(将 0 替换成 9),最小值是 0(将 9 替换成 0)。
所以我们得到 99 。

思路

最大值思路:从最高位往最低位搜索,找到第一个非9数字,将所有该数字替换成9

最小值思路:找到最高位数字,将所有该数字替换成0

Python代码

class Solution:def minMaxDifference(self, num: int) -> int:# 1、把num中每个数字保存到列表中,注意:最高位在最后面num_list = []temp_num = numwhile temp_num > 0:i = temp_num % 10  # 取出最低位num_list.append(i)temp_num //= 10# 2、从最高位开始遍历,找到第一个非9数字n = len(num_list)change_num = -1for j in range(n - 1, -1, -1):if num_list[j] != 9:change_num = num_list[j]break# 3、替换数字max_num = int(str(num).replace(str(change_num), "9"))min_num = int(str(num).replace(str(num_list[n-1]), "0"))return max_num - min_num

C代码

int minMaxDifference(int num) {char s[16], t[16];sprintf(s, "%d", num);strcpy(t, s);int pos = 0;while (s[pos] != '\0' && s[pos] == '9') {pos++;}if (s[pos] != '\0') {char a = s[pos];for (int i = 0; s[i] != '\0'; i++) {if (s[i] == a) {s[i] = '9';}}}char b = t[0];for (int i = 0; t[i] != '\0'; i++) {if (t[i] == b) {t[i] = '0';}}return atoi(s) - atoi(t);
}

复杂度

  • 时间复杂度O(log num)
  • 空间复杂度O(log num)
http://www.xdnf.cn/news/14310.html

相关文章:

  • 【配件出入库专用软件】佳易王配件进出库管理系统:轻量级仓储管理解决方案配件管理系统#进出库管理#仓储软件#库存统计#轻量级解决方案
  • 错题分析接口实现全流程
  • Vue3 + TypeScript 父组件点击按钮触发子组件事件方法
  • C#里与嵌入式系统W5500网络通讯(5)
  • 【python】bash: !‘: event not found
  • 【C语言】C语言发展历史、特点及其应用
  • DL00120-Lyapunov深度强化学习移动边缘计算网络在线计算卸载python
  • 互联网大厂Java求职面试:AI大模型应用实践中的架构挑战与实战
  • Android Activity全面解析:从创建到生命周期的完整指南
  • 深入解析 Java 集合框架:从底层原理到实战优化
  • Pytorch 卷积神经网络参数说明一
  • Python----OpenCV(图像的绘制——绘制直线,绘制矩形,绘制圆形,绘制多边形)
  • (javaSE)抽象类和接口:抽象类概念语法和特性, 抽象类的作用;接口的概念 接口特性 实现多个接口 接口间的继承 Object类
  • Qt--信号槽发送QVector
  • Relin梦中门——第二章——感官
  • jojojojojo
  • java 设计模式_行为型_15迭代器模式
  • nginx 配置返回 文件大小
  • Go语言底层(四): 深入浅出Go语言的ants协程池
  • 第八章:排序
  • 高速隔直电容设计
  • 【Vue】v-model进阶+ref+nextTick
  • 计算机是怎么跑起来的第五章
  • Python3 学习(菜鸟)-02基本数据类型
  • 从 PPO、DPO 到 GRPO:大语言模型策略优化算法解析
  • HarmonyOS 布局优化
  • 【Zephyr 系列 24】设备日志、事件与远程调试机制设计:为每一块硬件留痕,助力稳定性分析
  • Cursor ReAct Agent技术架构
  • Python爬虫实战:研究RQ库相关技术
  • Modbus原理一文通:从基础到实现的全面解析