【算法】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]
};
第二章:创建交互式地图 那么您应该已经有了一个安装了这些包的 conda 环境。否则,您需要创建一个新的 conda 环境并使用以下命令安装。 阅读详情

相关推荐

【Attention Is All You Need】Transformer模型精读

Attention Is All You Need》这篇论文奠定了Transformer模型的基础,为深度学习的发展提供了新的方向。Transformer通过自注意力机制和并行化处理显著提升了计算效率和模型性能。然而,Transformer的广泛应用也带来了新的挑战,如计算资源的消耗和对长序列的处理能力等。随着技术的不断发展,研究人员已经提出了诸如Efficient Transformer、Reformer等变种,旨在提升Transformer的效率和适应性。

Lewiz_124的博客 1499

【算法题】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

BSL编程语言 —— 系统化程序设计

BSL编程语言简介 文章目录0. 选择编程语言1. 写简单的表达式(Expression) 0. 选择编程语言 如果你第一次使用DrRacket,打开后需要选择Beginning Student Language (BSL) Language -> Choose Language (或直接按Ctrl + L),看到如下洁面后选择Beginning Student,点击OK 定义区【De...

CSDoneRight的博客 6451

数据结构与算法(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

2024年全国大学生电子设计竞赛H题_自动行驶小车

自动行驶小车(H题)【本科组/高职高专组】

qq_74395263的博客 1万+

用SimaPro做碳足迹分析:手把手教你完成产品生命周期评估报告

本文详细介绍了如何使用SimaPro进行碳足迹分析,从软件安装到生命周期评估报告的完整流程。通过实战案例演示,帮助制造业企业、咨询机构和科研团队掌握产品生命周期评估(LCA)的核心技术,精准识别环境热点并优化决策,为可持续发展转型提供科学依据。

yhn45678901的博客 715

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

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

OceanStar的博客 688

SDA 还是 SDI:SAP HANA 数据虚拟化与数据集成的取舍、组合与实战

结论先放在前面:SDA 面向数据虚拟化与联邦查询,强调不落地、不复制、按需实时访问;SDI 面向数据集成与复制,强调抽取、转换、装载与近实时增量同步。两者共享 Remote Source 与 Adapter 的理念,但侧重点与运行时组件明显不同。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 585

js dp动态规划例题

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

喜大普奔 443

YOLOv11半监督学习深度解析:基于FixMatch改进的先进目标检测框架

本文探讨了半监督学习与YOLOv11结合的创新方法。针对目标检测中半监督学习面临的伪标签质量不稳定、特征一致性难保证等挑战,研究提出改进版FixMatch框架。通过分析YOLOv11架构特性(如多尺度特征提取、双标签分配策略等)与半监督学习的适配性,设计了三项关键技术改进:空间感知阈值策略、多任务解耦处理和记忆增强机制。该方法在少量标注数据下可实现接近全监督的性能,显著降低工业检测等场景的数据标注成本。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 2083

执行任务赚积分

接下来N行,每行两个空格分隔的整数(SLA和V),SLA表示任务的最晚处理时间,V表 示任务对应的积分。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。第2个时间单位内,处理任务4,获得5个积分。输入描述:第一行为一个数N,表示有N个任务,1

面试高手的博客 4694

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

考虑变化量 + 三分法模板

小楼一夜听春雨 695

ADS基础教程16 - 存档和导入(workspace、cell、view)

选择workspace_Archive目录作为保存workspace归档的目录,点击打开进行目录选择,点击Finish保存目录。,选择cell_Archive目录作为保存cell归档的目录,点击打开进行目录选择,点击Finish保存目录。,选择view_Archive目录作为保存view归档的目录,点击打开进行目录选择,点击Finish保存目录。(2)在弹框中,可以选择点击Select将参考的条目添加进来,然后点击Next…(2)在弹框中,可以选择点击Select将参考的条目添加进来,然后点击Next…

XZ_ZC的博客 3703

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

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

m0_67615103的博客 560

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

qq_53512708的博客 253

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

动态数组DP

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

qq_43627100的博客 245

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

自定义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、付费专栏及课程。

余额充值