jiqing 发表于 2019-7-1 00:25:20

面试公司:MS(广州)


STQ 发表于 2019-8-9 16:37:56

本帖最后由 STQ 于 2019-8-10 19:53 编辑

# 给一个列表,列表中每个元素都是一个2元tuple,每个tuple表明了一个会议室的约定时间;
# 写一个算法,可以用最少的会议室,尽量不冲突地安排会议室。
def Q(meet_time):
    '''
    meet_time是一个n*2的列表,它的每个元素都是由两个数字组成;
    其中前面的数字为会议开始时间,后面的数字为会议结束时间。
    则最终输出的应该是一个列表a:
    len(a)就是需要的最少的会议室,而a里面的每个元素代表了每个会议室的安排。
    '''
    a = []
    for i in meet_time:
      # 对所有订单时间做for循环
      p0 = 0
      # p0是个标记,该标记初始状态为0;
      # 为1的时候说明这个i第x个会议室的安排有冲突;为2的时候说明已经安排进某一个会议室。此时再所有的循环应被跳过,跳到下一个i开始。
      if a == []:
            a.append()
            # 当a为空的时候,说明目前会议室没有人订,直接安排到第一个list中
      else:
            for x in a:
                # 对a中的集合进行for循环,对于i中的某一个订单,需要对a中所有集合做对比
                if p0 == 2:
                  # p0=2,意味着这个订单i已经放入某一个会议室内,所以下面的搜寻无意义,直接跳过
                  continue
                p0 = 0
                # 如果p0!=2,每次在新的x中,都将p0重置为0
                for y in x:
                  for p in range(i,i):
                        if p in range(y,y):
                            p0 = 1
                            # 如果存在p在y中,即出现冲突,给p0赋值为1,直接断开这个循环,在后面通过p0判定跳过循环。
                            break
                  if p0 == 1:
                        break
                if p0 == 1:
                  # p0 = 1 说明出现重复,需要跳过这一个x,在下一个x中寻找,所以后面用continue跳过本循环
                  continue
                else:
                  # 如果p0!=1,即对于所有y在x内,i与其不存在冲突,i可以安插进x内。将p0赋值为2,标记着已安排,跳过本循环。
                  p0 = 2
                  x.append(i)
                  continue
            if p0 == 1:
                # 在循环的最后,如果在最后一个会议室中为1,说明与目前所有的会议室有冲突,则给这个i新开一个会议室
                a.append()
    for u in a:
      u.sort()
      #将a中的元素排序,使其按照时间顺序排列
    return a

# 例题:
print Q([(8,12),(16,19),(10,16),(9,14),(13,16),(15,19),(8,10),(17,19),(19,23),(19,23)])

# 结果:
# [[(8, 12), (13, 16), (16, 19), (19, 23)], [(8, 10), (10, 16), (17, 19), (19, 23)], [(9, 14), (15, 19)]]

STQ 发表于 2019-8-9 16:38:28

select country,count(country) as visitor from log
group by country
order by visitor desc;

select country,count(country) as visitor from (select distinct(ip),country from log) as a
group by country
order by visitor desc;
页: [1]
查看完整版本: 面试公司:MS(广州)