📅  最后修改于: 2023-12-03 15:23:04.234000             🧑  作者: Mango
这是一道关于算法的面试题目,要求我们设计一个程序,实现在一个数组中找到最小的正整数(不包括1),并输出它的索引值。
给定一个整数数组,找到最小的正整数并输出它的索引值。如果不存在正整数,则输出-1。
例如,对于数组[0, -10, 1, 3, -20],最小的正整数是2(数组中的第三个元素),因此程序应该输出2。
要解决这个问题,我们需要遍历数组中的每个元素,并找到最小的正整数。具体步骤如下:
考虑到空间开销,我们可以利用原数组中的超出范围的位置,来标记当前数是否出现过。代码如下:
def find_min_positive(arr):
n = len(arr)
for i in range(n):
if arr[i] <= 0 or arr[i] > n:
continue
arr[abs(arr[i])-1] = - abs(arr[abs(arr[i])-1])
for i in range(n):
if arr[i]>0:
return i+1
return -1
本题考察了我们的编程能力,需要熟练掌握数组的操作技巧。在解决问题时,我们需要思考如何利用原有数据结构进行优化,以达到空间和时间的最优解。