本题其实不需要用列表或者字典即可,只需要求一个数,浪费存储
最开始还很蠢用了列表,大的数据会爆内存
解法:一个简单深搜即可
在评论区看到一个更好的解法,因为奇数分为n+1和n-1,所以以4来分类,找规律,直接连搜索都不用,时间空间都很节省。
class Solution:
def integerReplacement(self, n: int) -> int:
dic = {}
def dfs(num):
if num == 1:
dic[1] = 0
return 0
if num in dic.keys():
return dic[num]
if num % 2 == 0:
dic[num] = dfs(int(num / 2)) + 1
if num % 2 == 1:
dic[num] = min(dfs(num + 1), dfs(num - 1)) + 1
return dic[num]
return dfs(n)
if __name__ == "__main__":
print(Solution.integerReplacement("", 200000000))