百度2017春招笔试编程题

第一题

度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?

输入描述:
首先输入一个正整数N(N <= 50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000)

输出描述:
如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1

输入例子:
10
10 10 10 10 20 20 30 30 40 40

输出例子:
30

python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#coding=utf-8
'''
Created on 2017/6/21
@author: Administrator
'''
n=input("")
price=raw_input("")
price=price.split()
price=map(eval, price)
price=sorted(price)
a=[]
a.append(price[0])
for i in range(1,n):
b=price[i]
c=price[i-1]
if b>c:
a.append(b)
if a.__len__()<3:
print(-1)
else:
print a[2]

第二题

一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?
输入描述:
输入一个正整数N, N <= 50。

接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100

输出描述:
输出一个整数表示度度熊最少需要走的距离。

输入例子:
4
1 4 -1 3

输出例子:
4

python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#coding=utf-8
import math
n=input('')
sum1=raw_input('')
sum1=sum1.split()
sum1=map(eval, sum1)
he=0
cha=[]
for i in range(1,n):
he=he+abs(sum1[i]-sum1[i-1])
for i in range(1,n-1):
cha1=abs(sum1[i]-sum1[i-1])+abs(sum1[i+1]-sum1[i])-abs(sum1[i+1]-sum1[i-1])
cha.append(cha1)
b=max(cha)
c=he-b
print c