原题如下:
思路:首先我们的目标是寻找一个从k=1开始最小且不在数组内的的正整数,返回这个正整数。那么我们首先要考虑的就是将整数数组内的负数去除,然后遍历得到的数组,从一开始比较比较数组中最小的数,如果小于数组中最小的数,就输出k=1,否则删除数组中的这个数,比较第二比较小的数,此时k+=1。一次类推开始执行,直到输出k之后,跳出遍历循环,结束程序。
a =[4,5,0,1,-2,-3]
c = []
#去除负数
for i in a:
if i > 0:
c.append(i)
#如果c数组为空的话,最小正整数为1
if len(c)==0:
print(1)
else:
#否则,取出数组中最小的值
b = min(c)
k = 1
#开始比较
while k <= b:
if k < b:
print(k)
break
while k == b:
#再去除最小,开始比较
c.remove(b)
try:
b = min(c)
except ValueError as error:
print(b+1)
k = k + 1
嗯,经过一晚上的讨论,还有一下实现方式。2018-7-24实现。
def serche(list1):
num = 1
while True:
if num not in list1:
print(num)
break
num+=1
s=[1,1,2,3,4,4,4]
serche(s)
如有更好的解答方法,请分享一下。