【测试开发笔试题】

1.【爱奇艺】N个盒子,第i个盒子是边长为a[i]的立方体,如果一个盒子严格小于另一个盒子,并且大盒子里没有其他小盒子,小盒子没放入大盒子中,那么这个小盒子可以放入大盒子里。可以根据条件任意放盒子,求最后能看见的最少盒子数量。(应该是求重复值最大的个数)先排序后求值

a = [1,2,2,3]
p = {}
for i in a:
   p[i] = a.count(i)
k = 0
for key in p:
   if p[key] > k:
      k = p[key]
   continue
print(k)

2.【爱奇艺】N种食物,排成一排,可以选择若干种,但是不能选择相邻的食物,也可以不选,不选也是一种方法。

f(n) = f(n-1) + f(n-2)每加入一种食物,在f(n-1)的基础上添加方法,因为不能取相邻的,即f(n-2)种方法加入最后添加的一种食物。

N = 1  p = 2   N = 2  p = 3   N = 3  p = 5   N = 4  p = 8   N = 5  p = 12

a = [1,1]

for i in range(a):

    a.append(a[-1] + a[-2])

3.【keep】求正整数n的二进制数值中连续1的个数//13  1101 连续1为2  【做题首要思路很重要,开始想错了,很难弄回来。110111】

n = 14
a = []
d = 0
b = 0

for i in range(0,32):
    c = n&1
    a.append(c)
    n = n>>1
for i in range(len(a)):
        if a[i] == 1:
            b = b + 1
        if a[i] == 0:
            if b > d:
                d = b
            b = 0
print(d) 
        

4. 【keep】输入一组有序数据,和一个值,若这个值在数组中,返回数组坐标,若不在数组中,插入数据,并返回插入数据坐标。

def a(num,key):
    if num[0] >=key or len(num) == 0:
        return 0
    for i in range(1,len(num)):
        if num[i] >= key and num[i-1] < key:
            return i

    

猜你喜欢

转载自blog.csdn.net/yushu4772/article/details/82889741