LC-Relative Ranks

406 篇文章 0 订阅
69 篇文章 0 订阅

方法1:

class Solution(object):
    def findRelativeRanks(self, nums):
        """
        :type nums: List[int]
        :rtype: List[str]
        """
        length = len(nums)
        s_sorted = sorted(nums, reverse = True)
        res = [0] * length
        rank = ["Gold Medal","Silver Medal","Bronze Medal"]
        if length < 4:
            for i in range(length):
                res[nums.index(s_sorted[i])] = rank[i]
        else:
            for i in range(length):
                if i < 3:
                    res[nums.index(s_sorted[i])] = rank[i]
                else:
                    res[nums.index(s_sorted[i])] = str(i+1)
        return res

方法2:

class Solution(object):
    def findRelativeRanks(self, nums):
        """
        :type nums: List[int]
        :rtype: List[str]
        """
        score = sorted(nums, reverse=True)
        rank = ["Gold Medal", "Silver Medal", "Bronze Medal"] + map(str, range(4, len(nums) + 1))
        return map(dict(zip(score, rank)).get, nums)

0,第一个是自己写的,第二个是在submission中找到的效率极高的一个
1,题目要求:
给出n个运动员的积分,找出排名并对前三名给出金银铜的名词,剩下的根据积分进行排名
这里写图片描述
2,自己的写的虽然AC,但是效率很低,于是找到一个好的作为参考。


sorted()方法:
sorted(iterable, cmp=None, key=None, reverse=False) –> new sorted list
当reverse为True时,排序为倒序。


在第二个方法中,首先使用到了map方法,目的是生成一个完全的评分表而不像我做的只是前三的评分表。

  • map()函数

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

map(str, range(4, len(nums) + 1)),这里的str相当于一个函数,将数字转化为字符串的函数。
例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]

如果希望把list的每个元素都作平方,就可以用map()函数:

因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:

def f(x):  
    return x*x  
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])  
输出结果:  

[1, 4, 9, 10, 25, 36, 49, 64, 81]  

需要注意的是,map()函数不改变原有的 list,而是返回一个新的 list。

利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值