我是编程新手,刚开始学习算法。我试图解决的问题来自Khan Academy算法课程(它是用JavaScript编写的,但我在Python中经历过它)并且它要求我在子数组中找到最小值的索引。
具体来说,任务如下: 完成写入函数indexOfMinimum,它接受一个数组和一个数字startIndex,并返回索引startIndex或更大值时出现的最小值的索引。如果此最小值在此范围内出现多次,则返回此范围内最左侧出现的索引。
我一直在网上搜索这个问题的答案大约一个星期了,并且没有设法找到任何在Python 2中解决它的资源。如果有人可以帮我解决这个问题,我将不胜感激。 编辑:在阅读了一些回复之后,我有以下内容:(它对我有用,但如果有人看到它有问题,请在下面评论)
def indexOfMinimum(lst,index):
sublist = lst[index:]
for minValue in lst:
minIndex = sublist.index(min(sublist))
return minIndex
print indexOfMinimum([2,4,6,8,1,3,5,0,7,9], 4)
答案 0 :(得分:0)
这将需要三个Python工具:列表切片,方法 min 和 index 。使用起始索引,将 sub_list 设置为给定列表的必需片段。将 min 应用于子列表,获取列表的最小值。最后,在该最小值上使用 sublist.index 以获取最左侧外观的索引。
这足以让你感动吗?
答案 1 :(得分:0)
因此,您希望将变量(此处为"结果")设置为数组的第一个元素(也可以从右向左开始)并与每个元素进行比较。如果要比较的元素结果是较小的,则将结果设置为等于它。
为了帮助您入门,这是一种简单(天真)的解决方法:
array = [1, 2, 3, 4]
result = array[0]
for i in array:
if result > i:
result = i
i += 1;
print(result)

希望有所帮助!
答案 2 :(得分:0)
有很多方法,这里有一个:
def indexOfMinimum(lst,index):
smallest=lst[index] #assuming index is within range
smallestIndex=index
while index<len(lst):
if lst[index]<smallest:
smallest=lst[index]
smallestIndex=index
index+=1
return smallestIndex