2018阿里巴巴在线编程题

Posted parody

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018阿里巴巴在线编程题相关的知识,希望对你有一定的参考价值。

在其他博客上看到一道 "2018阿里巴巴在线编程题"

我记得题目大概是这样的:输入数据n(n>=6)代表n个数,从0-9任意输入n个数,然后在n个数选出6个数xx-xx-xx表示 时:分:秒,求出最小时间和最大时间,若时间无效,则输出时间无效,例如:
输入:
6
6 5 4 3 2 1
输出:
123456 235641

输入:
6
9 9 9 9 9 9
输出:
时间无效

看着有点意思,就自己做了一遍,输出格式自己美化了一下,没有严格按照题目要求。代码如下:

def find_min_in_range(l, lb, ub):
    if lb > l[-1] or ub < l[0]:
        return -1
    for x in l[:]:
        if x >= lb:
            l.remove(x)
            return x
 
 
def find_max_in_range(l, lb, ub):
    if ub < l[-1] or lb > l[0]:
        return -1
    for x in l[:]:
        if x <= ub:
            l.remove(x)
            return x


l0 = [3, 5, 1, 7, 4, 2, 9, 9]
# l0 = [9, 5, 1, 7, 4, 2, 9, 9]

l1 = l0[:]
l1.sort()

l2 = l1[:]
l2.reverse()

min_h0 = find_min_in_range(l1, 0, 2)
if min_h0 == 2:
    min_h1 = find_min_in_range(l1, 0, 3)
else:
    min_h1 = find_min_in_range(l1, 0, 9)

min_m0 = find_min_in_range(l1, 0, 5)
min_m1 = find_min_in_range(l1, 0, 9)

min_s0 = find_min_in_range(l1, 0, 5)
min_s1 = find_min_in_range(l1, 0, 9)

max_h0 = find_max_in_range(l2, 0, 2)
if max_h0 == 2:
    max_h1 = find_max_in_range(l2, 0, 3)
else:
    max_h1 = find_max_in_range(l2, 0, 9)

max_m0 = find_max_in_range(l2, 0, 5)
max_m1 = find_max_in_range(l2, 0, 9)

max_s0 = find_max_in_range(l2, 0, 5)
max_s1 = find_max_in_range(l2, 0, 9)

if -1 in [min_h0, min_h1, min_m0, min_m1, min_s0, min_s1, max_h0, max_h1, max_m0, max_m1, max_s0, max_s1]:
    print(‘invalid data‘)
else:
    print("min clock: %s%s:%s%s:%s%s" % (min_h0, min_h1, min_m0, min_m1, min_s0, min_s1))
    print("max clock: %s%s:%s%s:%s%s" % (max_h0, max_h1, max_m0, max_m1, max_s0, max_s1))

输出:

min clock: 12:34:57
max clock: 23:59:49

以上是关于2018阿里巴巴在线编程题的主要内容,如果未能解决你的问题,请参考以下文章

2018秋招小红书算法方向在线编程题

[算法]2018年阿里巴巴数据研发工程师编程题

2018 校招在线编程 20题-01

Alibaba

2018阿里编程测验题:最短汉密尔顿回路

全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段