-
作业题1 (算法真题):
-
给定一个整形数组,是否能找出其中的两个数使得其和为某个指定的值?
-
示例: 输入数组为{1, 5, 7, 3}, 指定值为10, 则我们可以从中找出两个数3和7, 和等于10。
-
# 函数调用格式如下 def main(): array = [1, 5, 7, 3] target_number = 10 result, a, b = hasSum(array, target_number) if result == 10: print('YES, %d + %d = %d' % (a, b, target_number)) else: print('NO') if __name__ == '__main__': main()
-
答案:
def main():
array = [1, 5, 7, 3]
target_number = 10
arra = len(array)
s = 1
for i in reversed(array):
arra-=1
array.pop(arra)
for j in reversed(array):
if target_number - i == j:
a,b = i,j
print(f"a:{a},b{b},a+b={a+b}")
if a+b == 10:
s = s+1
if s ==2:
print("这个能打印输出")
else:
print('NO')
if __name__ == '__main__':
main()
-
作业题2 (算法真题): 股票买卖,给定一个数组,第i个元素代表第i天的股价。假设最多允许进行1次买卖,求可能的最大利润是多少?
-
示例: 输入price = [12, 15, 14, 8, 11, 10, 12], 则输出最大利润是4。
-
# 函数调用格式如下 price = [12, 15, 14, 8, 11, 10, 12] result = get_max_profit(price) print(result) if __name__ == '__main__': main()
-
答案:
def main():
price = [2,23,12,7, 18,15, 14, 3, 11, 10, 12,17,29]
pe_max = 0
list_he = []
prices = len(price)#列表中是数字
while True:
prpe_max = pe_max+1
msa = price[prpe_max:prices]
if msa != []:
in_max = max(msa)#提取最大的数
pe_max = price.index(in_max)#最大数的下标
if prpe_max!= 0:
msin =price[:pe_max]
in_min = min(msin)#提取一最大数前面的数值
list_he.append(in_max - in_min)#最大的数添加到列表中
elif msa == []:
print(max(list_he))
break
if __name__ == '__main__':
main()