描述:
给出一个无序的数列,找出其中缺失的第一个正数,要求复杂度为 O(n) 如:[1,2,0],第一个缺失为3。 如:[3,4,-1,1],第一个缺失为2。
输入:
1,2,0
输出:
3
输入样例:
1,2,0 3,4,-1,1 -1,-3,-5 1,2,3 -1,-10,0
输出样例:
3 2 1 4 1
思路:
多组输入“,”为分割将以字符串形式输入的字符转换为整形,先进行排序,如果最大数为负数则输出“1”(0既不是正数也不是负数)。如果最大数是非负数,则从第一个数开始循环,如果这个数大于等于0,并且这个数加一的正整数不在这个队列中,则输出这个数加一。
代码:
#给出一个无序的数列,找出其中缺失的第一个正数,
#要求复杂度为 O(n) 如:[1,2,0],第一个缺失为3。 如:[3,4,-1,1],第一个缺失为2。
import sys
for line in sys.stdin:
line = line.strip().split(',')
line = list(map(int,line))
line.sort()
# print(line)
if (line[len(line)-1]<=0):
print(1)
else:
for i in line:
if i>=0:
if i+1 not in line:
print(i+1)
break