欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

397. 整数替换

程序员文章站 2022-05-20 19:06:03
...

本题其实不需要用列表或者字典即可,只需要求一个数,浪费存储
最开始还很蠢用了列表,大的数据会爆内存
解法:一个简单深搜即可

在评论区看到一个更好的解法,因为奇数分为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))