我试过(45,46)和(45,45)出现的特殊情况
以及应用程序中不太可能发生的测试用例:存在(11,6)、存在(-1,-5)、存在(-9,5)、存在(-3,10)。
不管怎样,所有这些案例的结果都是正确的,这是一个重点。
算法:def yi(li):
gen = (x for a,b in li for x in xrange(a,b+1))
start = p = gen.next()
for x in gen:
if x>p+2:
yield (start,p)
start = p = x
else:
p = x
yield (start,x)
如果下面代码中的aff设置为True,则显示执行步骤。def yi(li):
aff = 0
gen = (x for a,b in li for x in xrange(a,b+1))
start = p = gen.next()
for x in gen:
if aff:
print ('start %s p %d p+2 %d '
'x==%s' % (start,p,p+2,x))
if x>p+2:
if aff:
print 'yield range(%d,%d)' % (start,p+1)
yield (start,p)
start = p = x