375.猜数字大小 II
一、dfs
TLE
class Solution:
def getMoneyAmount(self, n: int) -> int:
def dfs(l, r):
if l >= r:
return 0
ans = sys.maxsize
# 遍历在[l,r]之间的每一个数x,求每种情况的最小值
for x in range(l, r + 1):
# (最坏情况)当选择的数为x时,至少需要cur才能猜中数字
cur = max(dfs(l, x - 1), dfs(x + 1, r)) + x
# (最优)在所有可以决策的数值之间取最优
ans = min(ans, cur)
return ans
return dfs(1, n)优化
最后更新于
