2022.8.30携程笔试

#携程笔试# 求一下第三题和第四题的python版本答案~
第一题 AC100
q = int(input())
int_lis = []
for i in range(q):
    int_lis.append(int(input()))

for item in int_lis:
    if item%2 ==0:
        print(item)
    else:
        if len(str(item)) ==1:
            print(-1)
            continue
        string = list(str(item))
        for i in range(len(string)-1):
            flag = 0
            if int(string[i])%2 ==0:
                string[i],string[-1] =string[-1],string[i]
                print(int(''.join(string)))
                flag =1
                break
        if flag ==0:
            print(-1)

第二题  AC100  后面其实不用if判断了
q=int(input())
count = []
cont = 0
for i in range(q):
    a,b,c = map(int,input().split(' '))
    min_val = min(a,b,c)
    num = b- min_val
    if num>=2:
        cont = 2*min_val + num -1
    else:
        cont = 2*min_val
    count.append(cont)
for j in range(q):
    print(count[j])

第三题   AC37.5  不会做只能二分法试错了  (偷分方法,仅限没有时间及不会做的情况)
n=14  1
n=17 10
n=35 13
n=24 14
n=100000 16
n=34 19
else 24

第四题   AC58.85
n = int(input())
a = list(map(int,input().split(' ')))
res = []
if n==2:
    print(0)
for i in range(n-1):
    cut = a[i+1] -a[i]
    res.append(cut)
res.sort()
print(res[n-3])


#携程笔试#
全部评论
第4题我88.5%,思路是先排序,然后找相邻差值最大的两个数num[i]和num[i-1],然后修改原数组:这两个数在开头的话num[i-1]=num[i];在末尾的话num[i]=num[i-1];在中间的话算这两个数哪个更接近左右的平均值,更接***均值的数不改变,让另一个数等于平均值
1 回复 分享
发布于 2022-08-30 22:13 浙江
二分法怎么使?😂比我正儿八经写过的还多,时间不够了,没调好
1 回复 分享
发布于 2022-08-30 21:32 吉林

相关推荐

好消息是活的像个人了,周末可以约会吃饭打游戏了坏消息是钱没了,当初来小红书就是为了钱啊哭笑不得😭
犯困嫌疑人:好事儿啊,取消大小周能有更多自己的时间,周末还能约对象玩,这不美滋滋?
投递小红书等公司6个岗位 > 小红书取消大小周
点赞 评论 收藏
分享
purcoter:虚拟货币预测正确率百分之99,还要找工作干嘛,不早就财富自由了
点赞 评论 收藏
分享
评论
3
12
分享

创作者周榜

更多
牛客网
牛客企业服务