Untitled
unknown
python
2 years ago
590 B
11
Indexable
class Solution:
def racecar(self, target: int) -> int:
n = target.bit_length()
if (target == 2**n - 1):
return n
dp = [float('inf')]*(target+1)
dp[0] = 0
dp[1] = 1
for i in range(2, target+1):
k = i.bit_length()
if i == 2**k - 1:
dp[i] = k
continue
for j in range(k-1):
dp[i] = min(dp[i], dp[i - (2**(k-1)) + 2**j] + k-1+j+2)
dp[i] = min(dp[i], dp[2**k-i-1] + k+1)
return dp[target]
Editor is loading...