【CSDN竞赛第21期】 Python 题解

第21期比赛页面:第21期编程竞赛

1、 合并序列

在这里插入图片描述
N N N个单词和字符串 T T T,按字典序输出以字符串 T T T为前缀的所有单词。

输入描述

输入文件第一行包含一个正整数 N N N
接下来 N N N行,每行一个单词,长度不超过 100 100 100
最后一行包含字符串 T T T
所有字符均为小写字母。

输出描述

按字典序升序输出答案。

输入样例

6
na
no
ki
ki
ka
ku
k

输出样例

ka
ki
ki
ku

示例2
输入

5
oi
od
ki
ko
ka
k

输出

ka
ki
ko

参考代码

class Solution:
    def __init__(self) -> None:
        pass
    
    def solution(self, N, arr, T):
        result = None
        
        # TODO: 请在此编写代码
        result=[]
        for a in arr:
            if a[0:len(T)]==T:
                result.append(a)
        result.sort()
        
        return result


if __name__ == "__main__":
    
    N = int(input().strip())
    
    arr = []
    for i in range(N):
        arr.append(input().strip())
    
    T = input().strip()
    
    sol = Solution()
    result = sol.solution(N, arr, T)
    print("\n".join(result))

2、 千问万问

在这里插入图片描述
给定大小为n的整数序列A.
现在会有q次询问,询问子区间的整数数量。

输入描述

第一行输入整数n,q.(1<=n,q<=1000)
第二行输入n个整数.(1<=a<=100000)
以下q行每行两个整数l,r。(1<=l,r<=100000)

输出描述

输出区间内的整数数量。

输入样例

10 3
1 2 3 4 5 6 7 8 9 10
1 1
1 2
1 3

输出样例

1
2
3

参考代码

注:以下代码能够通过示例,理论上来说也能够通过测试用例,但该题测试数据存在问题,导致无法通过。

class Solution:
    def __init__(self) -> None:
        pass
    
    def solution(self, n, q, nums, arr):
        result = None
        
        # TODO: 请在此编写代码
        result=[]
        nums.sort()
        for a in arr:
            r=0
            for n in nums:
                if a[0]<=n<=a[1]:
                    r+=1
            result.append(str(r))

        return result


if __name__ == "__main__":
    
    arr_temp = [int(item) for item in input().strip().split()]
    
    n = int(arr_temp[0])
    q = int(arr_temp[1])

    nums = [int(item) for item in input().strip().split()]


    arr = []
    for i in range(q):
        arr.append([int(item) for item in input().strip().split()])
    
    
    sol = Solution()
    result = sol.solution(n, q, nums, arr)
    print("\n".join(result))

3、 连续子数组的最大和

在这里插入图片描述
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和 。

输入描述

第一行输入整数数组的大小n。(1<=n<=1000)
第二行给出n个整数a。(-1e5<=a<=1e5)

输出描述

输出答案。

输入样例

9
-2 1 -3 4 -1 2 1 -5 4

输出样例

6

参考代码

class Solution:
    def __init__(self) -> None:
        pass

    def solution(self, n, arr):
        result = None
        
        # TODO: 请在此编写代码
        result=arr[0]
        t=0
        for a in arr:
            if t<0:
                t=a
            else:
                t+=a
            if t>result:
                result=t
        
        return result
        
if __name__ == "__main__":


    n = int(input().strip())


    arr = [int(item) for item in input().strip().split()]
    

    sol = Solution()
    result = sol.solution(n, arr)
    
    print(result)

4、 降水量

在这里插入图片描述
给定n个柱面的高度,表示降雨某地n块区域的海拔高度。
计算降雨之后该地最大储水面积。如果低于地平线,也就是小于0,则一定积水

输入描述

第一行输入整数n.(1<=n<=10000)
第二行输入n个高度整数h。(-10000<=h<=10000)

输出描述

输出答案。

输入样例

12
0 1 0 2 1 0 1 3 2 1 2 1

输出样例

6

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Colazxk.xyz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值