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方法,此题目也可以很简洁的完成。

  • 相关阅读:
    springMVC 是单例还是的多例的?
    js如何获取数字占的位数~
    java 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?
    数据挖掘基本概念讲解
    js如何判断小数点后有几位
    volotile关键字的内存可见性及重排序
    上传文件multipart form-data boundary 说明
    vi 调到第一行和最后一行
    linux监控平台搭建-磁盘
    Guava Cache 参数配置说明
  • 原文地址:https://www.cnblogs.com/dn-harris/p/6048255.html
Copyright © 2011-2022 走看看