擅长:python、mysql、java
<h3>时间复杂度由<a href="https://stackoverflow.com/users/6741053/%e0%b8%a3%e0%b8%a2%d7%a7%e0%b8%84%d0%b3%e0%b8%a3%d1%92%d7%a9%e0%b8%84">รยקคгรђשค</a></h3>
<blockquote>
<p>The time complexity is O(d<em>N^2). There are N</em>d states and work for
each state is O(N) at the most.</p>
</blockquote>
<ul>
<li>同样的事情,实现起来可能有点简单:</li>
</ul>
<pre><code>class Solution:
def minDifficulty(self, nums, d):
@lru_cache(None)
def depth_first_search(i, d):
if d == 1:
return max(nums[i:])
res, max_days = float('inf'), 0
for j in range(i, len(nums) - d + 1):
max_days = max(max_days, nums[j])
res = min(res, max_days + depth_first_search(j + 1, d - 1))
return res
return -1 if len(nums) < d else depth_first_search(0, d)
</code></pre>