hackerrank 刷题一(python 基础)
- 题一: 找到给出n个选手,找出第二高的成绩。 输入:
-
n,选手数量 n integers separated by space
思路,先把arr list化,排序,除掉与最高成绩相同的成绩,取第二高的成绩。
2. 题二:Nested List. 给出n个学生,他们的名字以及成绩,找到成绩第二名(们),可以是成绩相同的多个人。输入:
-
n 个学生 第一行学生名字,第二行学生成绩. 直到所有学生都输入完
思路一,先做一个dic, 把成绩当作关键字key,保存名字。相同的成绩append名字,最后把dic的keys list化,取第二高成绩,输出。
思路二,做一个list, 把[name, score]分别append在list里,把学生的成绩做成set,排序后取第二高,直接输出名字(使用 .join)
3. 题三: No idea. 给出一个array, 两个sets A,B. 如果array的数值在A里,加一分,如果在B里减一分,求最终分数. 输入:
-
n,m. 分别是array,sets A,B 的大小 array set A set B
思路,把A,B做成set, 一个输出sum[ (i in A)- (i in B)...] 利用python 的sum()特性- sum([True]) =1, sum([True, False])=1, sum([True, True])=2.
4. 题四:The Minion Game. 给出一个string,两个玩家Stuart & Kevin做出所有的substring,如果substring开头第一个单词在AEIOU里,Kevin得一分,否则Stuart得一分。最后输出赢的玩家和分数,如果平等输出Draw。example : string= "BANANA". --> Stuart 12.
思路,做出一个dic, 两个玩家各作为一个key, 初始值为0。对于每个玩家,得多少分取决于字母在string里的位置-第一个字母有len(string)个substring,...,最后一个字母只有一个substring。一个for, l=len(string), 每次加之后 l-=1, 最终加起来比较。