little exercise

little exercise


daily learn

素数问题 2020.7.20

输出素数还能这么写

import math

for num in range(2, 100):
    is_prime = True
    for factor in range(2, int(math.sqrt(num)) + 1):
        if num % factor == 0:
            is_prime = False
            break
    if is_prime:
        print(num, end=' ')

身高 输入 输出 2020.8.11

Q:输入说明:
第一行输入n代表队伍中的人数
第二行输入队伍中每个人的身高(用空格隔开)

比如输入:
5
2 3 1 5 4
6
5 4 1 6 8 2

输出说明:
如果现在所在位置之前没有比自己身高高的,数值变为-1,如果现在所在位置之前有比自己身高高的,数值变为所在位置之前那个离自己最近的且比自己高的那个人的身高

上例的输入对应输出:
5
-1 -1 3 -1 4
6
-1 5 4 -1 -1 8

class Solution:
    def people(self, a, b):

        if a == 0:
            return '没有人?'
        if a == 1:
            return -1
        res = [-1]  # 第一个一定是-1,那就设第一个为-1的列表
        for i in range(1, a):
            temp = b[:i]
            if b[i] >= max(temp):
                res.append(-1)  # 前面没有比他高的就加个-1
            else:
                temp.reverse()  # 倒转 从头找,找到就break ,记住 reverse()返回值为none
                for item in temp:
                    if item > b[i]:
                        res.append(item)
                        break
        return res


if __name__ == '__main__':
    s = Solution()
    num1 = int(eval(input('输入人数:')))
    num2 = input('输入身高:').split(' ')
    m = list(map(int, num2))
    print(s.people(num1, m))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值