0%

2026 拼多多秋招算法工程师岗:笔试

1. 前言

最近也是参加了一下 2026 拼多多秋招的算法工程师的笔试。题目难度适中,但是

2. 幸运年份

描述: 如果一个年份的每位数字(不包含前导零)都不相同,则定义这个年份为幸运的。多多会给出一些年份,对于每个年份,你可以帮忙找出大于这个年份的最小幸运年份吗。

输入: 第一行,包含一个正整数 $T(1 \leq T \leq 10)$ 代表测试数据的组数。 对于每组测试数据,仅有一行正整数 $n(0 \leq n \leq 10^6)$,表示多多给出的年份。

1
2
3
2
1881
2211

输出: 对于每组数据,输出一行正整数,表示大于给出年份的最小幸运年份输出不包含前导零

1
2
1890
2301

思路: 问题关键在于如何判断一个年份是否为幸运年份,以及如何找到大于给定年份的最小幸运年份。我们可以通过以下步骤来解决这个问题:

  1. 判断一个年份是否为幸运年份: 我们可以将年份转换为集合,通过对比转换前后的长度,就可以知道这个年份是否为幸运年份。
  2. 找到大于给定年份的最小幸运年份: 从给定年份开始,逐个加一,直到找到一个幸运年份为止。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys


def isLuckyYear(year: int) -> bool:
"""是否为幸运年份"""
s = str(year)
return len(set(s)) == len(s)


if __name__ == "__main__":
# 读取输入
data = sys.stdin.read().split()
t = int(data[0])
idx = 1

for _ in range(t):
y = int(data[idx])
idx += 1

while not isLuckyYear(y):
# 如果不是幸运年份,则加一
y += 1
# 打印出最小的结果
print(y)

3. 能源站状态

描述: 在二维地图上,有 $n$ 个能源站,能源站的的坐标依次为 $(x_1,y_1),(x_2,y_2),\dots,(x_n,y_n)$

一开始所有的能源站都是关闭状态。若能源站 $i$ 变为开启状态,则能源站 $i$ 能够把距离(直线距离)它不超过 $r_i$ 的所有能源站也变为开启状态,然后新启动的能源站也有可能继续把其它能源站变为开启状态。

多多现在能够开启任意一个能源站,请你告诉它最多能使多少个能源站变为开启状态。

输入:

1
2
3
4
5
6
7
8
9
10
11
12
13
3
2
0 0 1
2 0 1
3
0 0 1
1 0 1
3 0 1
4
0 0 4
2 0 1
3 0 1
5 0 1

输出: 对于每组数据,输出一行,每行一个数,表示最多能使多少个能源站变为开启状态

1
2
3
1
2
3

思路:

  • 本文作者: Kimariyb
  • 本文链接: https://ikuns.icu/031/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!