华为OD机考——牛客10道练习题(Python版)

注意:华为od机考——牛客10道练习题(Python版)仅供学习和参考,谢谢!

#练习题-数组:
'''
1、求解连续数列
已知连续正整数数列{K}=K1,K2,K3...Ki的各个数相加之和为S,i=N (0<S<100000, 0<N<100000), 求此数列K。

输入描述:
输入包含两个参数,1)连续正整数数列和S,2)数列里数的个数N。

输出描述:
如果有解输出数列K,如果无解输出-1

示例1
输入 525 6
输出 85 86 87 88 89 90

示例2
输入 3 5
输出 -1
'''

代码如下:


S = int(input())
i = int(input())
ListK = []

K1 = S/i-(i-1)/2

cc=str(K1)
valueAfterPoint = cc.split('.')[1]
valueAfterPoint = int(valueAfterPoint)

if valueAfterPoint ==0:
    for a in range(0,i):
        K = K1 + a
        ListK.append(int(K))
    print(*ListK)
else:
    print(-1)
 

'''
2、查找众数及中位数
众数是指一组数据中出现次数量多的那个数,众数可以是多个
中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数
查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数

输入描述:
输入一个一维整型数组,数组大小取值范围 0<N<1000,数组中每个元素取值范围 0<E<1000
输出描述:
输出众数组成的新数组的中位数

示例1:
输入 10 11 21 19 21 17 21 16 21 18 15
输出 21

示例2:
输入 2 1 5 4 3 3 9 2 7 4 6 2 15 4 2 4
输出 3

示例3:
输入 5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39
输出 7

'''

代码如下:

list = [int(i) for i in input().split(' ')]
a = {}
max_list = []
for i in list:
    if list.count(i)>1:
        a[i]=list.count(i)
print(a)
for m,n in a.items():
    if n == max(a.values()):
        max_list.append(m)
if len(max_list)%2==1:
    i = int((len(max_list)+1)/2)
    max_list.sort()
    zws = max_list[i-1]
else:
    i = int(len(max_list)/2)
    max_list.sort()
    zws = (max_list[i-1]+max_list[i])/2
print(zws)


#练习题-字符串:

'''
3、寻找相同子串
给你两个字符串 t 和 p ,要求从 t 中找到一个和 p 相同的连续子串,并输出该字串第一个字符的下标。
输入描述:
输入文件包括两行,分别表示字符串 t 和 p ,保证 t 的长度不小于 p ,且 t 的长度不超过1000000,p 的长度不超过10000。
输出描述:
如果能从 t 中找到一个和 p 相等的连续子串&#

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值