字节跳动编程题目第一题
题目的内容大意是:
对于两个长度为n的数组a,b。通过某种操作将a数组变成为b数组。这个操作就是:从L-R区间段为每个数字都加上相同的值k。
其中:1<=L<=R<=n,k>=0;
输入描述:首先输入一个数字t,表示有t组数据,每组数据的第一行为一个数字n表示数组的长度,接下来两行,每行有n个数字,分别为数组a和数组b。
输入实例:
2
6
3 7 1 4 1 2
3 7 3 6 3 2
6
1 1 1 1 1 1
1 2 1 1 3 1
输出描述: 对于每组数据输出YES或者NO,表示数组a能否通过对应的操作变成数组b。
YES
NO
题目不难,按照题目步骤一步一步来就可以了。把a和b对应位置相减得到的差用序列存储,一旦序列中出现3种及以上不同的差值时(即除了0以外还有至少两种不同差值)直接输出“NO”,当只有两种差值时要考虑除0以外的差值是否相连,如果不相连则判定为“NO”,反之为“YES”对于只有一种差值直接判定为“YES”代码如下:
t = eval(input())
t = 3*t
a = []
b = []
d = []
l1 = []
l2 = []
for i in range(t):
a.append(input())
for i in range(len(a)):
if len(a[i]) > 1:
b.append(a[i])
for i in range(0,len(b),2):
a1 = b[i].split(" ")
a2 = b[i+1].split(" ")
for j in a1:
l1.append(int(j))
for k in a2:
l2.append(int(k))
c = list(map(lambda x: x[0]-x[1],zip(l2,l1)))
d.append(c)
l1 = []
l2 = []
l5 = []
for i in d:
l3 = ""
l4 = []
if len(set(i)) == 1:
print("YES")
elif len(set(i)) == 2:
for j in i:
l3 += str(j)
l5 = l3.split("0")
for k in l5:
if len(k) != 0:
l4.append(k)
if len(l4) == 1:
print("YES")
else:
print("NO")
else:
print("NO")
总的来说题目不难,不过自己还是花了好一段时间才通过,还要加油。