多伦多面微软被LeetCode 284暴打?Python解法让我原地裂开! ![]()
家人们谁懂啊!今天面微软多伦多SDE岗,直接被LeetCode 284. Peeking Iterator干碎了
!
题目看着人畜无害,结果写Python的时候疯狂踩坑
!Iterator的next()和peek()逻辑绕得我头皮发麻
,最后硬是没AC,面试官表情逐渐凝固
……
复盘发现关键点:
要缓存peek()的值,不然next()直接GG
Python的StopIteration异常处理写到手抖![]()
面试紧张+时间压力=代码像屎山![]()
求问大佬们有没有优雅解法?或者微软是不是特爱考这种“简单但细节爆炸”的题啊?![]()
class PeekingIterator:
def __init__(self, iterator):
self.iterator = iterator
self.peeked = None # 这里没处理好直接裂开
def peek(self):
if self.peeked is None:
self.peeked = next(self.iterator) # 忘记try-catch了啊啊啊
return self.peeked
def next(self):
if self.peeked is not None:
val = self.peeked
self.peeked = None
return val
return next(self.iterator) # 这里又双叒叕可能抛异常!
总结:微软,不愧是你
……下次见到Iterator先磕个头再写码
#北美求职 #LeetCode噩梦
