Я наткнулся на этот код. Он сканирует элементы массива только один раз. Но меня смущает наличие двух вложенных циклов while, увеличивающих сложность до O (n ^ 2). Код выглядит следующим образом:
def summaryRanges(nums):
x, size = 0, len(nums)
ans = []
while x < size:
c, r = x, str(nums[x])
while x + 1 < size and nums[x + 1] - nums[x] == 1:
x += 1
if x > c:
r += "->" + str(nums[x])
ans.append(r)
x += 1
return ans
Я изучаю алгоритмы, поэтому, пожалуйста, поправьте меня, если я где-то ошибаюсь. Спасибо!!