牛客网的题目解答----小米2020测开

"""
小米秋招笔试
【求数字1出现的次数】
问题描述:
输入一个整数n,求从1到n这n个整数(十进制)中1出现的次数。要求空间复杂度为O(n)。

输入描述:
1
输入的数据包含一行: 整数N,要求N>1

输出描述:
1
输出一个整数,表示从1到N这N个整数(十进制)中1出现的次数。

输入样例:
12

输出样例:
 5
"""



def InputDetection ():
    """
    输入检测函数,返回输入值
    :return:
    """
    while True:
        InputNumber = input('请输入正整数\n')
        try:
            number = int(InputNumber)
            if number > 0:
                return InputNumber
                break
            else:
                print('注意是输入正整数')
        except ValueError:
            print('输入无效,重新输入')

def OneCount (GetNumber):
    """
    转换、计数
    :param GetNumber:
    :return:
    """
    NumberList = str(GetNumber)
    NumberLength = len(NumberList)
    Count = 0

    for i in range(NumberLength):
        if NumberList[i] == '1' :
            Count += 1

    return  Count
print(OneCount(InputDetection()))
"""
【查找无序数组中第二大的元素】
问题描述:
输入一个无序数组data[] , 且数组中无重复元素,查找出第二大元素。要求: 时间复杂度为O(n)。

输入描述:
输入无序数组data[], 且数组中无重复元素

输出描述:
输出数组中第二大元素

输入样例:
3 8 2 9 12

输出样例:
9
"""
def FormatInputDataList ():
    """
    输入检测函数,并将数据格式化
    :return:
    """
    while True:
        DataIn = input('请输入数据,并用空格区分\n')
        Space = 0
        for char in DataIn:
            if char.isspace() == True:
               Space += 1
        if Space == 0:
            print("请输入数据中包含空格")
        else:
            SplitInputData = DataIn.split()
            DataLength = len(list(SplitInputData))
            try:
                for i in range(DataLength):
                    SplitInputData[i] = int(SplitInputData[i])

                return SplitInputData
                break
            except ValueError:
                print("请输入数字")

def SortList(SortList):
    """
    排序、取值
    :param SortList:
    :return:
    """
    ResultList = sorted(SortList)
    TargetElement = ResultList[1]
    return TargetElement

print(SortList(FormatInputDataList()))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值