Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Bruteforce solution (SLOW) solution in Clear category for Staircase by swagg010164
def rec(stack, pointer, dig):
if len(stack) > 1 and int(stack[-1]) > int(stack[-2]):
yield len(stack)
if pointer == len(dig):
return
for i in range(pointer, len(dig)):
if len(stack) == 0:
stack.append(dig[i])
yield from rec(stack, i + 1, dig)
stack.pop()
else:
if len(stack) > 1 and int(stack[-1]) <= int(stack[-2]):
# ignore digit
yield from rec(stack, i + 1, dig)
prev, carry = stack[-1], stack[-1] + dig[i]
stack[-1] = carry
yield from rec(stack, i + 1, dig)
stack[-1] = prev
else:
stack.append(dig[i])
yield from rec(stack, i + 1, dig)
stack.pop()
# ignore digit
yield from rec(stack, i + 1, dig)
return
def staircase(digits: str) -> list[int]:
ans = 0
for s in rec([], 0, digits):
ans = max(ans, s)
return ans
Aug. 10, 2023
Comments: