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

原文地址:https://www.cnblogs.com/parody/p/10002258.html

时间: 2024-10-02 18:01:06

2018阿里巴巴在线编程题的相关文章

2018 校招在线编程 20题-01

1. 最大乘积(拼多多) 输入 3 4 1 2 输出 24 解题思路: 定义五个数,一个最大,一个次大,一个第三大,一个最小,一个次小.只要找到这五个数,问题就解决了.因为最大乘积只可能是最大*(次大*第三大) 或者是 最大*(最小*次小).时间复杂度O(n),空间复杂度O(1).PS:这道题输入有问题,题目给的样例是直接给了一组数,而此时用例先给了一个数的个数n,然后再给了一组数. 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 in

蘑菇街2016研发工程师在线编程题

传送门 第一题: [编程题] 搬圆桌 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转.问最少需要移动几步. 输入描述: 一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000) 输出描述: 输出一个整数,表示答案 输入例子: 2 0 0 0 4 输出例子: 1 题解转自:ixiaomo 思路很简单,千万别想复杂了 无论圆桌如何移动,都必须在圆

2018.7.20 编程题: 写一个Singleton出来。

编程题: 写一个Singleton出来. Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 一般Singleton模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法. public class Singleton { private Singleton(){} //在自己内

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

代码如下: class TreeNode: def __init__(self, x): self.left=None self.right=None self.value=x def BuildTree(ceng, zhong): if len(ceng)==0: return None if len(ceng)==1: return TreeNode(ceng[0]) else: flag=TreeNode(ceng[0]) root=ceng[0] zong=zhong[:zhong.in

2018 科大讯飞笔试编程题

第一题:争吵问题 有一个队列,每个人要么朝左边(L表示),要么朝右边(R表示),因为每个人都讨厌其他任何人,只要两人面对面就会发生真吵.真吵结果是胜者留在队列中,败的人移除队中. 如果序列中有多对争吵,可以任选一对,胜者留在队中,败者出局,求最后队列最少人数是多少. 例子: LRLRLRR 输出:3 LRR. 思路:这道题找到方法了就很简单,依据题意 如果要真吵就只有  RL (两人对面)这种情况  ,其他  LL   RR   LR 都不会发生真吵. 所以我们只要从左边向右找到第一个R,从右边

2017美团点评web前端在线编程题(1)(2)

题1: 题目描述: 很多网页上会显示一些其他网页的超链接,如一些搜索网页会逐条列出搜索到的条目.在一些网页中,被用户点击过的超链接会换一种颜色. 假设某网页一开始有n条超链接,从上到下有1-n编号,每条超链接都显示成一个字符串,最开始所有的超链接都显示为蓝色.现在给出用户点击过得那些超链接, 一条超链接只要被点击过了,就会由蓝色变成紫色,请输出最后所有的仍未蓝色的超链接. 输入: 第一行输入一个整数n,接下来n行,每行一个字符串,表示每个超链接的名称,名称只有小写字母构成,长度不超过20,且所有

indeed2017校招在线编程题(网测)三

A. Calculate Sequence 分析:就是斐波那契递推公式,但是初始值是指定的,只用求第10个数,数据范围和复杂度都比较小,直接写. B. 忘了叫啥了. 就是有a-j十个字符组成的字符串,要求去掉一些字符,使得剩下的长度大于k,且这些满足要求里面的字符串字典序最小的.然后需要枚举删除的字符串,2^10 = 1024,字符长度最大值100,所以复杂度为1024*100,在1s的时限内完全可以,直接编写. C. Anagram Multiple Number 这题好像更简单哎,求一个数的

阿里前端在线编程题

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>demo</title> <style> * { padding: 0; margin: 0

美团2016在线编程题 最大差(贪心)

题目描述 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值. 给定数组A及它的大小n,请返回最大差值. 测试样例: [10,5],2 返回:0 思路:最大插差值dis初始化为0,用一个指针从头遍历,找到指针之前及指针指向的元素的最小值为被减数min1,若指针指向的元素A[i] - min1 > dis,则dis更新为 A[i] - min1. 1 class LongestDistance { 2 public: 3 int getDis(vector<int>