滴滴笔试 9.8
第一题 二分查找 AC
n, a, b = map(int, input().split())
c = list(map(int, input().split()))
# 二分查找,初始化左右边界
left = a * b // sum(c)
right = a * b // n
while left < right:
mid = (left + right) // 2
# 当前生产的糖果包数
cnt = sum(x * mid // b for x in c)
if cnt < a:
left = mid + 1
else:
right = mid
print(right)
第二题 暴力搜索 82%
判断字符串是否为任意两个合并字符串的子串(不能是前缀或后缀)
n = int(input())
words = []
for _ in range(n):
words.append(input())
# 两两合并字符串
records = []
for i in range(n):
for j in range(n):
records.append(words[i] + words[j])
ret = []
for s in words:
for t in records:
x = t.find(s)
if x != -1 and x != 0 and x != len(t) - len(s):
ret.append(s)
ret.sort()
print(len(ret))
for s in ret:
print(s)

查看11道真题和解析