3 ms·
def firstMissingPositive(A): try: for x in range(1, max(A)+1): if x not in A: return x except: return A def firstMissingP
by zebulanmcranahn 12y ago
def firstMissingPositive(A):
try:
for x in range(1, max(A)+1):
if x not in A: return x
except: return A
def firstMissingPositive(A):
try: return next(x for x in range(1, max(A)+1) if x not in A)
except: return A
Two above return:
print(firstMissingPositive([4,2,5,7,1])) # 3
print(firstMissingPositive([4,100])) # 1
print(firstMissingPositive([])) # []
print(firstMissingPositive([5])) # 1
I wasn't sure what [5] or [] were supposed to return so maybe I'm still wrong? Had never heard of this question before, thought I'd try it out.
Thanks for the reply, very informative.
- yeukhon 12y agoHN is not really for code review, but why are you using try and except here??
- TheLoneWolfling 12y agoPython is designed for it, and it makes it cleaner, so why not? EAFP: Easier to ask for forgiveness than permission That being said, just a blanket except is a bad idea.
- zebulanmcranahn 12y agoThanks for the ValueError tip. I added it as well as a TypeError just in case the input comes in as a string. My skills are beginner level at best, tips like yours help a lot!
- TheLoneWolfling 12y agoYou really should change "except" to "except ValueError" there. Also, I suggest first converting A to a set. Just "A = set(A)" would work.