2023大厂真题提交网址(含题解):
www.CodeFun2000.com(http://101.43.147.120/)
最近我们一直在将收集到的机试真题制作数据并搬运到自己的OJ上,供大家免费练习,体会真题难度。现在OJ已录入50+道2023年最新大厂真题,同时在不断的更新。同时,可以关注"塔子哥学算法"公众号获得每道题的题解。
第一问容易看出是
m
a
x
(
p
,
n
)
max(p,n)
max(p,n)
第二问,考虑 b [ 1 ] b[1] b[1]可以被我们构成多少可能的结果。
让每个数变成一样的本质就是让差分数组的后
n
−
1
n-1
n−1项全变成0.
该过程的每一步 就是 让一个正数–,负数++.
因为要保证步数最小,那么这里面至少有 m i n ( p , n ) min(p,n) min(p,n)步是从 [ 2 , n ] [2,n] [2,n]中同时拿掉一对+1-1
剩下
a
b
s
(
p
−
n
)
abs(p-n)
abs(p−n)步,有两种决策,要么和
b
[
1
]
b[1]
b[1]操作,要么和
b
[
n
+
1
]
b[n+1]
b[n+1]操作.
又因为操作没有区别,我们只看最后结果。
b
[
1
]
b[1]
b[1]的取值范围就是
[
b
[
1
]
,
b
[
1
]
+
a
b
s
(
p
−
n
)
]
[b[1],b[1]+abs(p-n)]
[b[1],b[1]+abs(p−n)].
进阶:
求有多少种不同的方案使得他们相同.
任意两个方案不同,存在某一步的操作不一样