-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path5.py
More file actions
25 lines (19 loc) · 747 Bytes
/
5.py
File metadata and controls
25 lines (19 loc) · 747 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution:
def minSteps(self, n: int) -> int:
dp = {}
def helper(cur_size, copy_size):
if cur_size == n:
return 0
if cur_size > n:
return 1e8
if (cur_size, copy_size) in dp:
return dp[(cur_size, copy_size)]
# copy and paste so we have take 2 operations plus
copy = 2 + helper(2*cur_size, cur_size)
paste = 1e8
if copy_size > 0:
# only paste so only 1 operation plus
paste = 1 + helper(cur_size + copy_size, copy_size)
dp[(cur_size, copy_size)] = max(copy, paste)
return min(copy, paste)
return helper(1, 0)