网易2019秋季校园招聘编程题-俄罗斯方块

【题目】

小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。
荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都被占满时,这一行会被消去,并得到1分。
有一天,小易又开了一局游戏,当玩到第 m 个方块落下时他觉得太无聊就关掉了,小易希望你告诉他这局游戏他获得的分数。

输入描述

第一行两个数 n, m
第二行 m 个数,c1, c2, ... , cm , ci 表示第 i 个方块落在第几列
其中 1 <= n, m <= 1000, 1 <= ci <= n

输入例子

3 9
1 1 2 2 2 3 1 2 3

输出例子

2

python 代码

from collections import Counter
if __name__ == '__main__':
    nm = input()
    n, m = nm.split()[:2]
    n = int(n)
    m = int(m)

    num = input().split()
    score = 0
    result ={}

    for i in set(num[:m]):
        result[i]= num.count(i)
    set1=set(eval(i) for i in result.keys())
    set2 = set(range(1,n+1))
    if set1==set2:
        print(min(list(Counter(result).values())))
    else:
        print(0)

知识点
思路是:
获取输入
转换为数字类型,可以使用eval()函数去除引号:
a='123456'
print(eval(a)) ->123456
使用count()统计每个元素的个数,生成为字典形式
对比keys是否包含所有的数据
最后选取最小的数据即为输出结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容