zoukankan      html  css  js  c++  java
  • HackerRank刷题之路---Python

    HackerRank刷题之路---Python

    HackerRank的Python模块的网页链接
    由于绝大多数题目都很简单,适合初学者练练手,所以这里只记录一些有趣的题目和一些有趣的代码实现。

    Alphabet Rangoli

    此题目要求输入一个整数,打印出如下图形(此图为输入10的时候):
    hehe
    基于Python的强大,此题目可以用一行代码输出这个图形,只是这行代码要堆砌挺长的……

    from __future__ import print_function
    import string
    N = input()
    [print((reduce(lambda s,x:s.center(len(s)+2,'-').center(len(s)+4,x),[item for item in string.lowercase[N-i:N]])).center(4*N-3,'-')) for i in range(1,N+1)+range(N-1,0,-1)]
    

    Triangle Quest 2

    此题目要求输入一个整数,打印出如下图形(输入为5的时候):

    此题目要求不能超过2行代码,但是实际上此题目可以用一行代码解决问题:

    for i in range(1,int(raw_input())+1): print reduce(lambda x,y:x+y,map(str,(range(1,i)+range(i,0,-1))))
    

    No Idea

    有一个包含n个整数数组,以及两个不相交的集合A,B,分别包含m个整数。你喜欢A中的元素,不喜欢B中的元素,对于n个整数组成的数组中的每一个数,如果在A中,则幸福指数+1,如果在B中,则幸福指数-1,否则无变化,初始幸福指数为0,求最终的幸福指数。
    这道题目之所以选他,是因为一个关于计数和列表解析的小技巧值得记录下来:

    n,m = raw_input().strip().split(' ')
    N = map(int,raw_input().strip().split(' '))
    A = set(map(int,raw_input().strip().split(' ')))
    B = set(map(int,raw_input().strip().split(' ')))
    count = [1 if x in A else -1 if x in B else 0 for x in N]   #注意这句代码,是个计数通用小技巧
    print sum(count)
    

    Maximize It!

    这道题目同上一道一样,都是50分的题,有K个list,每个list包含一定数量的元素,不一定相同。编程找到从每个list中选出一个元素对其平方后相加再对一个M取余数的最大值。

    from itertools import product
    K,M = map(int,raw_input().split())
    print max(map(lambda x: sum(x) % M,list(product(*[map(lambda x:int(x)**2,raw_input().split())[1:] for i in range(K)]))))
    

    借助itertools库中的product方法,此题目也可以很简洁的完成。

  • 相关阅读:
    Mapjoin和Reducejoin案例
    自定义InputFormat和OutputFormat案例
    shullfe机制详解
    辅助排序和Mapreduce整体流程
    Mapreduce的排序(全局排序、分区加排序、Combiner优化)
    Mapreduce中maptask过程详解
    Mapreduce的序列化和流量统计程序开发
    SpringCloud-熔断器
    Mybatis 之$与#
    限流算法
  • 原文地址:https://www.cnblogs.com/dn-harris/p/6048255.html
Copyright © 2011-2022 走看看