2019字节跳动算法岗春招(不是2020届的秋招!),共四道编程题,没有选择题。笔试的时候只做出来了前两道,这里参考了大佬 Azhao1993 的解题思路, 把后两道的解法整理一下。
Q3 编程比赛
现在有n人参加编程比赛,比赛结束后每个人都得到一个分数。现在所有人铺成一圈(第1个和第n个相邻)领取奖品,要求:
1.如果某个人的分数比左右的人高,那么奖品数量也要比左右的人多;
2.每个人至少得到一个奖品。
输入描述:
第一行是整数n,表示测试样例数
每个测试样例的第一行是一个正整数,表示参加比赛的人数(0<n<100,000)
第二行是n个正整数,a[i] (0 <a[i]<10,000), 表示的从第1个人到第n个的分数
输出描述:对每个测试样例,输出应该准备的最少奖品
示例1
输入
2
2
1 2
4
1 2 3 3
输出
3
8
思路: 将选手从左到右排列在一个列表中,首尾相连,然后从左到右和从右到左分别使用贪心算法。
解答 (Python3):
# 读入输出
import sys
try:
while True:
line = sys.stdin.readline().strip()
if line == '':
break
lines.append(line)
except:
pass
def main():
N = int(lines[0]) # 测试样例数
for i in range(N):
m = int(lines[i*N+1]) #选手数目
s = [