You need to enable JavaScript to run this app. 如何仅替换单个数字位求解两个整数的最大和(含负数场景)
优惠活动
大模型
产品
解决方案
定价
更多

如何仅替换单个数字位求解两个整数的最大和(含负数场景)

单数位替换求两数最大和问题

问题定义

给定两个整数,仅允许执行以下操作:从两个数里选其中一个,替换它的任意单个数字位(不能新增、删减数字的总位数),计算完成操作后两数能拿到的最大可能和。

约束规则

  • 输入的两个整数可以为负数
  • 全程仅能修改1个数的1位数字,不允许调整数字总长度

参考示例

示例1
输入:a=1,b=90
最优解:把b的个位0替换为9得到99,最终和为1+99=100
示例2
输入:a=23,b=45
最优解:把a的十位2替换为9得到93,最终和为93+45=138

解题逻辑

核心思路非常直接,因为只能改一个数的某一位,只需要遍历所有可能的修改方向取最大值就行:

  1. 先计算「修改a的任意一位时,a能取到的最大值maxA」,此时的和为 maxA + 原b值
  2. 再计算「修改b的任意一位时,b能取到的最大值maxB」,此时的和为 原a值 + maxB
  3. 取上面两个和的较大值,就是最终答案

单个数单改一位取最大值的实现细节

很多人容易在负数处理上踩坑,这里分两种情况明确规则:

  • 处理正数:从数字的最高位开始从左往右找,遇到第一个不是9的数位,直接替换成9。越早替换权重越高的数位,拿到的数值越大。如果整个数已经全是9,那不管改哪一位数值都不会变,直接取原值即可。
  • 处理负数:数字本身带负号,要让数值尽可能变大(也就是离0更近)。操作时忽略负号从数字部分的最高位开始从左往右找,遇到第一个不是0的数位,直接替换成0。如果数字部分已经全是0(也就是数本身是0),那不管改哪一位数值都不会变,直接取原值即可。

举个负数场景的验证例子:如果a=-5,b=3,那么改a的话把5改成0得到0,和为0+3=3;改b的话把3改成9得到9,和为-5+9=4,最终取较大的4就是正确答案。


内容的提问来源于stack exchange,提问作者Vishnu Teja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.13 02:06:06