网易首页 > 网易号 > 正文 申请入驻

2026-10-07:最大数字范围的整数之和。用go语言,给定一个整数数组 nums。对于其中任意整数,先看它十进制表示中的各个数字,取其中最大

0
分享至

2026-10-07:最大数字范围的整数之和。用go语言,给定一个整数数组 nums。对于其中任意整数,先看它十进制表示中的各个数字,取其中最大值与最小值,二者相减得到一个差值,可称为该整数的数位跨度。接着在 nums 里比较每个整数的数位跨度,找到最大的那个跨度值。最后,把 nums 中所有数位跨度正好等于这个最大值的整数相加,并返回这个总和。

比如 5724 中的数字最大为 7、最小为 2,因此它的数位跨度为 5。

1 <= nums.length <= 100。

10 <= nums[i] <= 100000。

输入: nums = [5724,111,350]。

输出: 6074。

解释:

i

nums[i]

最大数字

最小数字

数字范围

0

5724

7

2

5

1

111

1

1

0

2

350

5

0

5

最大数字范围为 5。数字范围为 5 的整数是 5724 和 350,因此答案为 5724 + 350 = 6074。

题目来自力扣3982。

具体过程可以分成下面几步:

  1. 1. 准备两个全局记录变量

  • • 一个用来记录当前已经遇到过的最大数位跨度,初始可以看成 0。

  • • 一个用来记录“当前最大数位跨度对应的所有整数之和”,初始为 0。
    注意:这个和不是最终答案,因为后面如果遇到更大的数位跨度,之前的累加就要作废,重新开始累加。

2. 依次遍历数组中的每一个整数
对每个整数,都要先单独计算它的数位跨度。

3. 计算一个整数的数位跨度

  • • 先准备两个临时变量:一个表示当前见过的最小数字,一个表示当前见过的最大数字。

  • • 由于十进制数字范围是 0 到 9,所以最小数字可以先设为一个较大的值,最大数字可以先设为一个较小的值,方便后续更新。

  • • 然后不断取出这个整数的最后一位数字:

    • • 用这个数字去更新最小数字,取更小的那个。

    • • 用这个数字去更新最大数字,取更大的那个。

    • • 然后把整数去掉最后一位,继续取新的最后一位。

  • • 当所有位都取完后,最大数字减去最小数字,就得到这个整数的数位跨度。

4. 把当前整数的数位跨度和全局最大数位跨度比较
比较结果有三种情况:

  • • 第一种:当前数位跨度比之前记录的最大数位跨度还大。
    这说明找到了新的最大跨度。
    此时之前累加的那些整数全部无效,因为最终只关心最大跨度对应的整数。
    所以要做两件事:

  1. 1. 更新全局最大数位跨度为当前这个更大的跨度。

  2. 2. 把累加和直接重置为当前这个整数本身,而不是继续加。
    这一步很关键,相当于“重新开始累加”。

• 第二种:当前数位跨度和之前记录的最大数位跨度相等。
说明当前整数也属于最终要累加的对象。
于是把当前整数加到累加和里。

• 第三种:当前数位跨度小于之前记录的最大数位跨度。
说明当前整数不可能是最终答案的一部分。
直接忽略,不更新任何东西。

5. 继续处理下一个整数
重复第 3 步和第 4 步,直到数组中所有整数都处理完。

6. 遍历结束后返回累加和
此时全局最大数位跨度已经确定,并且累加和中保存的就是所有数位跨度等于该最大值的整数之和。

以题目示例nums = [5724, 111, 350]为例:

  • • 处理 5724:
    它的数字是 5、7、2、4,最大是 7,最小是 2,数位跨度是 5。
    当前全局最大跨度从 0 变成 5,累加和重置为 5724。

  • • 处理 111:
    它的数字都是 1,最大是 1,最小是 1,数位跨度是 0。
    0 小于当前最大跨度 5,所以忽略。

  • • 处理 350:
    它的数字是 3、5、0,最大是 5,最小是 0,数位跨度是 5。
    5 等于当前最大跨度 5,所以把 350 加到累加和中。
    累加和变成 5724 + 350 = 6074。

最终返回 6074。

复杂度分析:

  • • 时间复杂度:
    外层需要遍历数组中的 n 个整数。
    对每个整数,需要拆出它的每一位十进制数字。
    设一个整数的十进制位数为 k,则每个整数需要 k 次操作。
    因此总时间是 O(n × k)。
    在题目约束下,整数最大为 100000,最多只有 6 位,所以 k 最大是 6,可以看作常数。
    因此也可以说总时间复杂度是 O(n)。

  • • 额外空间复杂度:
    算法只使用了若干个临时变量来保存当前最小值、最大值、当前跨度、全局最大跨度和累加和等。
    没有使用额外的数组、哈希表或递归栈等与输入规模相关的空间。
    因此总额外空间复杂度是 O(1)。

Go完整代码如下:

package main

import (
"fmt"
)

func maxDigitRange(nums []int) (ans int) {
maxRange := 0
for _, x := range nums {
mn, mx := 9, 0
for v := x; v > 0; v /= 10 {
d := v % 10
mn = min(mn, d)
mx = max(mx, d)
}

r := mx - mn
if r > maxRange {
maxRange = r
ans = x // 重新累加
} elseif r == maxRange {
ans += x
}
}
return
}

func main() {
nums := []int{5724, 111, 350}
result := maxDigitRange(nums)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def max_digit_range(nums):
ans = 0
max_range = 0

for x in nums:
if x == 0:
mn = mx = 0
else:
mn, mx = 9, 0
v = x
while v > 0:
d = v % 10
mn = min(mn, d)
mx = max(mx, d)
v //= 10

r = mx - mn

if r > max_range:
max_range = r
ans = x # 重新开始累加
elif r == max_range:
ans += x

return ans

if __name__ == "__main__":
nums = [5724, 111, 350]
result = max_digit_range(nums)
print(result)

C++完整代码如下:

  




using namespace std;

int maxDigitRange(const vector& nums) {
int ans = 0;
int maxRange = 0;

for (int x : nums) {
int mn = 9, mx = 0;

for (int v = x; v > 0; v /= 10) {
int d = v % 10;
mn = min(mn, d);
mx = max(mx, d);
}

int r = mx - mn;

if (r > maxRange) {
maxRange = r;
ans = x; // 重新开始累加
} elseif (r == maxRange) {
ans += x;
}
}

return ans;
}

int main() {
vector nums = {5724, 111, 350};
int result = maxDigitRange(nums);
cout << result << endl;

return0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
特朗普称“乌克兰应该换个总统”,泽连斯基回应:恕我直言,选择哪位领导人,应由我们的社会、我们的人民决定,现在举行选举“真的很难”

特朗普称“乌克兰应该换个总统”,泽连斯基回应:恕我直言,选择哪位领导人,应由我们的社会、我们的人民决定,现在举行选举“真的很难”

政知新媒体
2026-10-12 07:53:29
刚刚,江阴山姆开业!

刚刚,江阴山姆开业!

最江阴
2026-10-13 09:09:17
尊界V800刹车踏板被踩断,供应商董事长朋友圈开炮!真相还有多远?

尊界V800刹车踏板被踩断,供应商董事长朋友圈开炮!真相还有多远?

听心堂
2026-10-09 09:37:10
珍惜好天气,下一波降雨快要来了!

珍惜好天气,下一波降雨快要来了!

上海徐汇
2026-10-13 08:50:31
一家三口入住佛山一酒店被困卫生间4小时,父亲称孩子没穿衣服,再晚点开门可能会失温,自己撞门致肋骨骨折,酒店:愿支付房费20倍的补偿

一家三口入住佛山一酒店被困卫生间4小时,父亲称孩子没穿衣服,再晚点开门可能会失温,自己撞门致肋骨骨折,酒店:愿支付房费20倍的补偿

潇湘晨报
2026-10-12 12:33:10
C罗:我就是历史最佳,若达到1000球会是了不起的成就

C罗:我就是历史最佳,若达到1000球会是了不起的成就

篮坛第一线
2026-10-12 20:48:00
上海大师赛大冷门!2号种子阿尔卡拉斯出局,送对手首胜TOP3

上海大师赛大冷门!2号种子阿尔卡拉斯出局,送对手首胜TOP3

全景体育V
2026-10-12 21:19:16
河南清明上河园饰演金国将军的演员,被问到靖康耻时连说不知道,后续一番回怼引发热议

河南清明上河园饰演金国将军的演员,被问到靖康耻时连说不知道,后续一番回怼引发热议

陈意小可爱
2026-10-12 12:21:05
章子怡高调宣布喜讯,小腹微凸状态回春,她令整个娱乐圈刮目相看

章子怡高调宣布喜讯,小腹微凸状态回春,她令整个娱乐圈刮目相看

悦君兮君不知
2026-10-13 01:59:50
深圳华南城商铺租金跌80%,管理费15元一平,租金只租5到10元。业主买了十年还租不出去

深圳华南城商铺租金跌80%,管理费15元一平,租金只租5到10元。业主买了十年还租不出去

捣蛋窝
2026-10-13 00:42:01
胡塞武装,凭什么这么难打?因为坚决不建国,因为借鉴中国游击战

胡塞武装,凭什么这么难打?因为坚决不建国,因为借鉴中国游击战

烈史
2026-09-24 10:27:55
电视剧都不敢这么演!郑钦文第一次反抗父亲,执意与恩师“复合”

电视剧都不敢这么演!郑钦文第一次反抗父亲,执意与恩师“复合”

体坛小二哥
2026-10-12 11:20:34
大快人心!捐给美国7千万,满嘴“中国穷关我啥事”,如今破产了

大快人心!捐给美国7千万,满嘴“中国穷关我啥事”,如今破产了

泪满过眼
2026-10-13 00:42:18
郑钦文距离李娜的成就还有多远?差大满贯冠军+世界排名前二,但有一项荣誉独属

郑钦文距离李娜的成就还有多远?差大满贯冠军+世界排名前二,但有一项荣誉独属

尘语者
2026-10-12 11:11:41
郑钦文夺冠后,另一场比赛开始了,品牌们开始集体“加班”

郑钦文夺冠后,另一场比赛开始了,品牌们开始集体“加班”

澎湃新闻
2026-10-12 15:24:49
孔子学院开办数10年,投入近十亿美元,被关停后国人为何纷纷叫好

孔子学院开办数10年,投入近十亿美元,被关停后国人为何纷纷叫好

丁丁鲤史纪
2026-10-13 00:17:09
俄方最新回应泽连斯基:普京愿意下令不在选举日当天对乌克兰实施打击

俄方最新回应泽连斯基:普京愿意下令不在选举日当天对乌克兰实施打击

澎湃新闻
2026-10-12 22:54:04
“太窒息了,我要是孩子直接跳了”,一顿廉价早餐,让母亲发小作文

“太窒息了,我要是孩子直接跳了”,一顿廉价早餐,让母亲发小作文

熙熙说教
2026-10-12 13:43:52
被同事下毒,美伯克利华裔女工程师公开针孔视频:投毒者仅判一天监禁,如今还申请洗白

被同事下毒,美伯克利华裔女工程师公开针孔视频:投毒者仅判一天监禁,如今还申请洗白

红星新闻
2026-10-12 18:26:09
世俗新规引争议,阿塞拜疆校园全面限制头巾,触发大规模民间抗议

世俗新规引争议,阿塞拜疆校园全面限制头巾,触发大规模民间抗议

地球记
2026-10-12 01:52:46
2026-10-13 09:27:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1511文章数 83关注度
往期回顾 全部

科技要闻

尊界:10月底确认制动踏板支架升级方案

头条要闻

牛弹琴:美国突然转向俄罗斯一边 欧洲看得目瞪口呆

头条要闻

牛弹琴:美国突然转向俄罗斯一边 欧洲看得目瞪口呆

体育要闻

一周吃6顿披萨的胖子,也能单防姆巴佩?

娱乐要闻

张艺谋身体状况曝光 陈婷不再顾及体面

财经要闻

险资“追涨杀跌”致科技股持续回调?

汽车要闻

小鹏G9L巴黎车展全球上市 法国市场售价74990欧元起

态度原创

本地
数码
亲子
艺术
公开课

本地新闻

踏访沙县第一村,寻国民小吃本源

数码要闻

首发1299元 米家洗衣机双筒1kg发布:80℃高温煮洗、99.99%除菌

亲子要闻

著名专家:试管婴儿寿命仅40年,那首例试管婴儿如今如何了?

艺术要闻

台北故宫一件魏晋真迹,被称作晋代笔法的“活化石”,水平不输《兰亭序》!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版