当前位置: 首页 > news >正文

Leetcode 3500. Minimum Cost to Divide Array Into Subarrays

  • Leetcode 3500. Minimum Cost to Divide Array Into Subarrays
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3500. Minimum Cost to Divide Array Into Subarrays

1. 解题思路

这一题非常惭愧,没有自己搞定,基本是抄的大佬们的代码,甚至抄完之后还是没完全理解,非常惭愧……

整体这一题的思路还是比较简单的,就是一个动态规划,剩下的问题就在于怎么写这个迭代式。

如果单纯按照题意,设置迭代方式为考察每一个位置作为第i个子串的开头,并考察其子串的终点位置时,其对应的算法复杂度就成了 O ( N 3 ) O(N^3) O(N3),这显然太大了。

因此,我们就必须要调整我们的迭代方式,将其压缩到 O ( N 2 ) O(N^2) O(N2)左右才行。

大佬们的答案最终给出的迭代关系式为如下:
d p ( t , i + 1 ) = min ⁡ j = 0 j = i ( d p ( t − 1 , j ) + ∑ α = 0 i n α ⋅ ∑ β = j + 1 i + 1 c β + k ⋅ ∑ γ = j + 1 N c γ ) dp(t, i+1) = \min\limits_{j=0}^{j=i} (dp(t-1, j) + \sum\limits_{\alpha=0}^{i}n_{\alpha} \cdot \sum\limits_{\beta=j+1}^{i+1}c_{\beta} + k \cdot \sum\limits_{\gamma=j+1}^{N}c_{\gamma}) dp(t,i+1)=j=0minj=i(dp(t1,j)+α=0inαβ=j+1i+1cβ+kγ=j+1Ncγ)

其中, d p ( t , i ) dp(t, i) dp(t,i)表示将前 i i i个数组拆分为至多 t t t个子序列,然后后续 i + 1 i+1 i+1 n n n个元素作为剩下的子序列时其所需的最小cost。

2. 代码实现

我们将其翻译为最终的python代码语言为:

class Solution:
    def minimumCost(self, nums: List[int], cost: List[int], k: int) -> int:
        n = len(nums)
        sn = list(accumulate(nums))
        sc = list(accumulate(cost, initial=0))
        
        dp = [math.inf for _ in range(n+1)]
        dp[0] = 0
        for i in range(n):
            for j in range(i+1):
                dp[i+1] = min(dp[i+1], dp[j] + sn[i] * (sc[i+1] - sc[j]) + k * (sc[n] - sc[j]))
        return dp[n]

提交代码评测得到:耗时2777ms,占用内存18.1MB。

相关文章:

  • Spring IOC:容器管理与依赖注入秘籍
  • RK3568 pinctrl内容讲解
  • Python----机器学习(距离计算方式:欧式距离,曼哈顿距离,切比雪夫距离,余弦相似度,汉明距离,闵可夫斯基距离,Jaccard指数,半正矢距离)
  • 探索PHP的未来发展与应用趋势
  • Java面试黄金宝典27
  • transformer架构与其它架构对比
  • K8S学习之基础六十六:Rancher部署
  • Kafka延迟队列实现分级重试
  • 在eclipse中通过git放弃某个版本之前所有的更新
  • Cpp网络编程Winsock API
  • iOS 按键越狱脚本支持一键新机软件教程
  • TTL 值 | 在 IP 协议、ping 工具及 DNS 解析中的作用
  • git错误:fatal: detected dubious ownership in repository at xxxxxx
  • 基于Spring Boot的轻型卡车零部件销售平台的设计与实现(LW+源码+讲解)
  • Python:爬虫概念与分类
  • [Effective C++]条款26:尽可能延后变量定义的出现时间
  • 【Java虚拟机】JVM
  • Mac 设置静态IP的方法 和 Mac 设置静态IP后 无法联网
  • AI学习记录-QWQ32b太强了
  • 网站改版html页面 NGINX 借用伪静态和PHP脚本 实现301重定向跳转
  • 塞尔维亚总统因突发健康问题,中断对美国的正式访问并回国
  • 美国中央情报局计划裁员1200人
  • 著名医学翻译家王贤才逝世,享年91岁
  • 履新宿州市政府党组书记后,任东暗访五一假期安全生产工作
  • 缔造“水饺皇后”的香港,也是被移民塑造的香港
  • 三大上市猪企:前瞻应对饲料原材料价格波动