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