"""
小米秋招笔试
【求数字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()))