Monday, August 27, 2018

[LeetCode]Champagne Tower


这道题我们老老实实地从上到下计算即可,用dp[i][j]表示第i行第j个被子剩下的体积,j <= i,那么我们有递推公式:
  • dp[i][j] = max((dp[i - 1][j] - 1) / 2, 0), if i == 0
  • dp[i][j] = max((dp[i - 1][j - 1] - 1) / 2, 0), if i == j
  • dp[i][j] = max((dp[i - 1][j] + dp[i - 1][j - 1] - 1) / 2, 0), if 0 < i < j
因为最多有99行和99列,我们遍历完所有的i和j即可。假设输入有n行,那么时间复杂度和空间复杂度为O(n^2),这道题行数最大99,所以也可以说是O(1)。代码如下:


No comments:

Post a Comment