【算法】JS DP 力扣6299拆分数组的最小代价

jSDP-开源 IETF协议SDP为描述多媒体会话的信息提供了标准表示。 此信息作为有效负载包含在其他协议消息中。 jSDP是一个Java库,使用户能够操纵SDP消息 立即下载

题目链接

6299. 拆分数组的最小代价

题目描述

给你一个整数数组 nums 和一个整数 k 。

将数组拆分成一些非空子数组。拆分的 代价 是每个子数组中的 重要性 之和。

令 trimmed(subarray) 作为子数组的一个特征,其中所有仅出现一次的数字将会被移除。

例如,trimmed([3,1,2,4,3,4]) = [3,4,3,4] 。

子数组的 重要性 定义为 k + trimmed(subarray).length 。

例如,如果一个子数组是 [1,2,3,3,3,4,4] ,trimmed([1,2,3,3,3,4,4]) = [3,3,3,4,4] 。这个子数组的重要性就是 k + 5 。

找出并返回拆分 nums 的所有可行方案中的最小代价。

子数组 是数组的一个连续 非空 元素序列。

题解思路

dp[i]代表[0, i]这个数组拆分的最小代价,则可以通过以下方式遍历可以计算出dp[i]的结果

dp[i] = Math.min(dp[i], dp[i - 1] + trimmed([i, i]) + k)

dp[i] = Math.min(dp[i], dp[i - 2] + trimmed([i - 1, i]) + k)

......

dp[i] = Math.min(dp[i], dp[1] + trimmed([2, i]) + k)

dp[i] = Math.min(dp[i], dp[0] + trimmed([1, i]) + k)

dp[i] = Math.min(dp[i], 0 + trimmed([0, i]) + k)

至于计算trimmed可以用一个map记录数字出现的个数,从i到0从后往前计算

时间复杂度O(n^2)

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var minCost = function(nums, k) {
  const len = nums.length, 
    dp = new Array(len).fill(Infinity) // dp[i]代表[0, i]这个数组拆分的最小代价
  
  // 求dp[i]的最小代价
  for (let i = 0; i < len; i++) {
    const cache = new Map() // 记录数字出现的个数 便于计算trimmed
    let trimmed = 0
    // dp[i] = dp[j - 1] + trimmed([j, i]) + k
    for (let j = i; j >= 0; j--) {
      // num是在数组[j, i]中nums[j]出现过的次数
      const num = (cache.get(nums[j]) || 0) + 1
      cache.set(nums[j], num)

      // 计算[j + 1, j]中的trimmed
      // 第一次重复
      if (num === 2) trimmed += 2
      // 后续重复
      else if (num > 2) trimmed++
      // else 没重复即num === 1 trimmed的值不变

      // 递推公式
      if (j === 0) dp[i] = Math.min(dp[i], k + trimmed)
      else dp[i] = Math.min(dp[i], dp[j - 1] + k + trimmed)
    }
    cache.clear()
  }

  return dp[len - 1]
};
【Linux】实际项目应该如何完成?--安防监控系统项目的总结 到目前为止我也做个5、6个嵌入式项目,但以往都是从零开始自己做,也就是毫无计划,想到那里做那里,有想法就会去实现,就这样导致我碰到了很多坑,也消耗了我许多时间,当然,不是说这样不好,因为在其中我也得到了一个很好的锻炼与练习,但是这不适用于在工作中去这样做。... 阅读详情

相关推荐

5分钟搞定!用Coze+剪映小助手批量生成萌宠视频(附完整工作流配置)

本文详细介绍了如何利用Coze工作流与剪映小助手快速批量生成萌宠视频的完整方案。通过智能内容生成、素材处理、剪辑组装和输出适配四大模块的协同,实现5分钟内完成高质量视频制作。特别适合多宠物账号运营者,工作流支持模板切换和参数修改,大幅提升内容生产效率。

weixin_28678151的博客 389

【算法题】2448. 使数组相等的最小开销

给你两个下标从 0 开始的数组 nums 和 cost ,分别包含 n 个 正 整数。你可以执行下面操作 任意 次:将 nums 中 任意 元素增加或者减小 1。对第 i 个元素执行一次操作的开销是 cost[i]。请你返回使 nums 中所有元素 相等 的 最少 总开销。示例 1:输入:nums = [1,3,5,2], cost = [2,3,1,14]输出:8输入:nums = [2,2,2,2,2], cost = [4,2,8,1,3]输出:0。

kangbin825的专栏 531

别再只会setStyleSheet了!Qt实现背景透明的5种方法全解析(附性能对比)

本文深入解析Qt实现背景透明的5种高阶方案,包括QPalette、setWindowOpacity、QGraphicsOpacityEffect、样式表和复合透明方案,并提供详细的性能对比与优化建议。针对不同平台和场景,帮助开发者选择最适合的透明效果实现方式,提升UI设计质量与性能表现。

weixin_27061475的博客 259

数据结构与算法(Java) 44:最小分割代价

题目一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的 金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金条,怎么分最省铜板? 例如,给定数组{10,20,30},代表一共三个人,整块金条长度为 10+20+30=60. 金条要分成10,20,30三个部分。 如果, 先把长度60的金条分成10和50,花费60再把长度50的金条分成20和30,花费50 一共花费110铜板。 但是如果, 先把长度60的金条分成30和30,花费60再把长度30金条分成10和20,花费30一共.

Dorothy_Xue 817

从DC到DCG:手把手教你搭建物理感知综合流程(含DEF文件处理避坑指南)

本文详细介绍了从Design Compiler(DC)过渡到DC Topographical(DCT)和DC Graphical(DCG)的完整操作框架,特别针对DEF文件处理提供避坑方案。通过环境准备、工具升级、DEF文件处理、DCG综合配置等步骤,帮助开发者高效应对28nm以下工艺节点的物理感知综合挑战,显著提升时序收敛效率。

weixin_27966471的博客 381

纽扣电池供电系统优化:NBM5100A与STM32F745VG组合方案

在低功耗物联网设备设计中,能量管理是核心挑战之一。纽扣电池因其体积小、成本低被广泛采用,但瞬时大电流需求常导致电压骤降和寿命缩短。通过超级电容缓冲技术,可以实现能量的细水长流式存储与集中释放。NBM5100A电源管理IC与STM32F745VG微控制器的组合方案,采用双阶段能量管理架构,先以恒定小电流充电,再通过电容释放大电流。这种方案不仅能提升系统稳定性,还能延长电池寿命3-5倍,特别适合智能门锁、无线传感器等需要间歇性高功率输出的场景。

weixin_29194255的博客 257

算法:分割黄金的最小代价

给定一个正数数组arr,arr的累加和代表金条的总长度,arr的每个数代表金条要分成的长度。规定长度为k的金条分成两块,费用为k个铜板。返回分割的最小代价。由此可见,整个拆分过程如同二叉树展开。叶子节点就是每个分割的大小。3、然后依次弹出两个数,求和。2、把所有树放到小根堆中。4、把和扔到小根堆中。

OceanStar的博客 688

读书笔记:深度学习入门-基于python的理论与实现(俗称鱼书)

终于从头到尾把鱼书看完啦,真的是非常入门,非常查漏补缺,对新手很友好,对有一定基础的人也非常不错。看完不复习等于没看,所以今天开始复盘,顺便写这篇读书笔记。希望分享给没看过这本书或者看过这本书的同僚们参考,欢迎大家指教。我将从第三章神经网络开始复习,前两章内容书里已经非常基础and清楚了。(会持续更新滴).........

博客而已 1万+

js dp动态规划例题

dp动态规划题目 2023-2-21

喜大普奔 443

项目经理必看:如何建立高效的相关方沟通机制?

你是否遇到过这样的场景?客户突然说“这不是我要的”,开发团队抱怨“需求总变”,高层追问“进度滞后为什么不早说”?这些问题的根源往往是——相关方沟通机制失效。本文聚焦“如何建立高效沟通机制”,覆盖从识别相关方到持续优化的全流程,适用于IT、产品、工程等各类项目。本文将按“理解问题→拆解核心概念→掌握工具方法→实战落地→未来趋势”的逻辑展开,重点讲解“相关方分析矩阵”“沟通计划表”等实用工具,并用“组织生日派对”的案例贯穿全文,让抽象概念变得可感知。相关方识别:用“权力/利益矩阵”找对人(像派对邀请关键客人)

项目管理的博客 1295

2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器

12v / 24v智能模拟高侧MOSFET栅极驱动器。2ED2410-EM具有输入CPP和CPN的电压比较器。该比较器可用于基于任何模拟电压触发SAFESTATE模式,甚至是外部电压2ED2410-EM。CPP为比较器的正输入,CPN为负输入。VcPREF可以通过微控制器进行调节,也可以通过板载电源芯片(如英飞凌SBC)或简单的分压器在限制VcP(REF)内进行固定,以保持稳定性。使用此比较器允许2ED2410-EM进入SAFESTATE并独立于微控制器关闭MOSFET。

让学习成为一种习惯 2189

leetcode:2448. 使数组相等的最小开销【猜结论落在给定点 + 考虑初始值和变化量 + 三分法模板学习】

考虑变化量 + 三分法模板

小楼一夜听春雨 695

ARFoundation系列讲解 - 手部跟踪编程

通过使用ARFoundation的手部跟踪子系统,我们可以轻松地在AR应用程序中实现与用户手部的交互。通过设置AR环境、创建场景和相机、添加手部跟踪功能以及编写相应的脚本,我们可以开始在AR场景中跟踪和操作用户的手部。在Unity中创建一个新场景,并将AR Session组件添加到场景中的一个空对象上。手部跟踪的具体实现可能因AR设备和平台的不同而有所差异,你可能需要根据你的使用情况进行一些适配和调整。当你将手部放入AR场景中时,手部跟踪系统将触发相应的事件,并调用脚本中的回调函数。

2301_79325339的博客 355

刷完15道js版dp题,面试再也不怕了

某个男人 动态规划,而我作为一个致力称为厨师界最会写算法的前端,总得刷上一部分题,有那么一点发现吧,现在我们就来聊聊,菜鸡如我,发现了什么。

m0_67615103的博客 560

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【算法】JS DP 二分 力扣6346. 打家劫舍 IV

力扣周赛6346. 打家劫舍 IV 通过DP+二分解决

qq_53512708的博客 253

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

动态数组DP

----动态规划 一、 动态规划是可分阶段与阶段决策来解决问题的算法.通过筛选阶段局部解, 达到整体最优。 1、多阶段决策:如果一类问题的求解过程可以分为若干个互相联系的阶段, 在每一个阶段都需作出决策,并影响到下一个阶段的决策。 2、最优性原理:不论初始状态和第一步决策是什么,余下的决策相对于 前一次决策所产生的新状态,构成一个最优决策序列。 3、步骤:分阶段->状态->状态转移-&...

qq_43627100的博客 245

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

自定义JS乘法运算误差解决!

在实际开发中遇到这样一个乘法公式:数量*单价=总价 像这样的浮点数列子:200*8.2,JS算出的结果是: 像这种浮点数的乘法计算就会有误差,我们需要得到准确的值应该是:1640,与我们后台C#计算结果要一致。 这里我们采用两种方式来解决。 1:乘数和被乘数同时扩大10000倍。因为金额的最小单位也就是厘。然后结果在除以100000000,公式是:(2000000*82000)/100...

weixin_34099526的博客 987

JavaWeb技术之JSP

目录 1. 什么是JSP 2. JSP为什么会出现 3.JSP中如何嵌套java代码 示例 jsp中的注释 4. JSP的原理 5. JSP的内置对象 1、request对象 2、response对象 3、session对象 4、application对象 5、out 对象 6、pageContext 对象 7、confifig 对象 8、page 对象 9、exception 对象 6. JSP的指令 (1)Page指令 (2) Include指令 (3)Tagli

qq_36279562的博客 7591

[JS][dp]题解 | #打家劫舍(一)#

题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家;如果偷了第二家,那么就不能偷第一家和第三家。 给定一个整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。 示例1 输入: [1,2,3,4] 返回值: 6 说明: 最优方案是偷第 2,4 个房间 示例2 输入: [1,3,6] 返回值

Dust的博客 1009

huffman树:最小拆分代价即最小带权路径和

huffman树 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 huffman树使得原先不同权重的叶子节点经过整合按照不同的层次进行分布,其具有的特点是: 值越大的叶子节点,距离根节点越近。 值越小的叶子节点,距离根节点越远。 根据huffman树最优带权路径的特性,产生了huffman编码: 从huffman树根节点开始,沿左边编码0 沿右边编码1 从根节点到叶子

一只老风铃 781

金块j分割的最小代价

题目: 一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的 金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金 条,怎么分最省铜板?例如,给定数组{10,20,30},代表一共三个人,整块金条长度为10+20+30=60. 金条要分成10,20,30三个部分。 如果, 先把长度60的金条分成10和50,花费60 再把长度50的金条分成20和30,花费50 一共花...

Cheng 468

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 210

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 313

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 571
上一篇: 【算法】JS滑动窗口 力扣6293统计好子数组的数目
下一篇: 【你不知道的JavaScript】(01)基础+数组+字符串+数字
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值