Leetcode 3013. Divide an Array Into Subarrays With Minimum Cost II

  • Leetcode 3013. Divide an Array Into Subarrays With Minimum Cost II
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3013. Divide an Array Into Subarrays With Minimum Cost II

1. 解题思路

这一题的话思路上的话我一开始是想着偷懒直接用动态规划,结果果然还是遇到了超时的问题,因为事实上要遍历index和 i 1 i_1 i1事实上也是一个 O ( N 2 ) O(N^2) O(N2)的算法复杂度,并不怎么现实。

但是后来我转念一想,这道题感觉我还是想复杂了,因为题目限制要求 i k − 1 − i 1 ≤ d i_{k-1} - i_1 \leq d ik1i1d,因此事实上就是要在长度为 d d d的窗口区间当中分为 k k k段,然后考察其中靠后的 k − 1 k-1 k1段的开头元素的最小值。而这个事实上又完全等价于在这个长度为 d d d的窗口当中找出 k − 1 k-1 k1个最小的元素即可。

因此,这道题也只需要遍历所有长度为 d d d的窗口,然后考察其中最小的 k − 1 k-1 k1个元素的和的最小值然后加上第一个元素即可,而这就可以解答了,我们只需要用一个滑动窗口然后维护一下其中的各个元素以及前 k − 1 k-1 k1个元素的和即可。

2. 代码实现

给出python代码实现如下:

class Solution:def minimumCost(self, nums: List[int], k: int, dist: int) -> int:n = len(nums)elems = sorted(nums[1:dist+2])s = sum(elems[:k-1])ans = sfor i in range(dist+2, n):idx = bisect.bisect_left(elems, nums[i])if idx < k-1:s = s + nums[i] - elems[k-2]elems.insert(idx, nums[i])idx = bisect.bisect_left(elems, nums[i-dist-1])if idx < k-1:s = s - elems[idx] + elems[k-1]elems.pop(idx)ans = min(ans, s)return ans + nums[0]

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka 问题排查

订单宽表数据不同步 事情的起因是专员在 ze app 上查不到订单了&#xff0c;而订单数据是从 mysql 的 order_search_info 查询的&#xff0c;order_search_info 表的数据是从 oracel 的 BZ_ORDER_INFO 表同步过来的&#xff0c;查不到说明同步有问题 首先重启&#xff0c;同步…

ICMP控制消息 汇总

控制消息由 类型 字段中的值标识。代码 字段给出了消息的附加上下文信息。自协议首次引入以来&#xff0c;一些控制消息已被弃用。 重要的ICMP Control Message控制信息 类型码状态描述0 –回声回复&#xff1a;140回声回复&#xff08;用于ping&#xff09;1和2未分配已预留3 …

0004.电脑开机提示按F1

常用的电脑主板不知道什么原因&#xff0c;莫名其妙的启动不了了。尝试了很多方法&#xff0c;没有奏效。没有办法我就只能把硬盘拆了下来&#xff0c;装到了另一台电脑上面。但是开机以后却提示F1&#xff0c;如下图&#xff1a; 根据上面的提示&#xff0c;应该是驱动有问题…

Spring Security工作原理(三)

在认证之间保存请求 如处理安全异常中所示,当请求没有认证且需要认证资源时,需要保存请求以便在认证成功后重新请求受保护的资源。在Spring Security中,这是通过使用RequestCache实现来保存HttpServletRequest来实现的。 RequestCache HttpServletRequest被保存在Request…

可替代Allegro A3901的国产GC3901 5V H 桥驱动器,驱动电流能力更强,且低成本,大电流

步进电机驱动的应用方案目前市场上大多选用国外品牌的电机驱动器&#xff0c;其中ALLEGRO的A3901在这一块的应用很广泛。但是由于市场越来越成熟&#xff0c;当前对于产品开发成本要求也越来越低&#xff0c;国产品牌也推出了相应的镜头驱动器&#xff0c;因此ALLEGRO的A3901已…

Redis和RediSearch的安装及使用

1. 安装要求 ReadiSearch要求Redis的版本在6.0以上RediSearch 要求使用 GNU Make 4.0 或更高版本 2. Redis的安装 查看redis的版本&#xff1a; redis-server --version或者&#xff0c;如果你已经启动了Redis服务器&#xff0c;你也可以使用redis-cli工具来获取版本信息&a…

Win10/11中VMware Workstation设置网络桥接模式

文章目录 一、添加VMware Bridge Protocol服务二、配置桥接参数1.启用系统Device Install Service服务2.配置VMware 需要确认物理网卡是否有添加VMware Bridge Protocol服务 添加VMware Bridge Protocol服务 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参…

枚举类型有着一篇足以

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青-CSDN博客 1.关键字enum的定义 enum是C语言中的一个关键字&#xff0c;enum叫枚举数据类型&#…

helm 一键部署

helm HPA rancher 安全机制 k8s的核心功能&#xff1a;组件功能 k8s的网络 命令行基本的增删改查 deployment statefulsets 挂载卷&#xff1a;emptyDir&#xff0c; hostPath&#xff0c; nfs pv pvc 动态pvc必问 configmap ingress hpa pod 的自动伸缩 helm 什么是hel…

python opencv 图片缺陷检测(讲解直方图以及相关系数对比法)

一、利用直方图的方式进行批量的图片缺陷检测&#xff08;方法简单&#xff09; 二、步骤&#xff08;完整代码见最后&#xff09; 2.1灰度转换&#xff08;将原图和要检测对比的图分开灰度化&#xff09; 灰度化的作用是因为后面的直方图比较需要以像素256为基准进行相关性比…

Vue2中CesiumV1.113.0加载离线地图

Vue2中CesiumV1.113.0加载离线地图&#xff0c;本文以天地图为例。 1.使用nodejs获取天地图 新建nodejsdownmap项目文件夹&#xff0c;初始化项目 npm init -y src/index.js // An highlighted block var Bagpipe require(bagpipe) var fs require("fs"); var r…

2024.1.21周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、Introduction 四、模型 一、连续时间模型 二、离散时间模型 五、结论 二、实验代码 Navier–Stokes equation 总结 摘要 本周我阅读了一篇题目为Physics-informed neural networks: A deep learning fra…

快速傅立叶变换FFT学习笔记

什么是FFT&#xff1f; FFT&#xff08;Fast Fourier Transformation&#xff09; 是离散傅氏变换&#xff08;DFT&#xff09;的快速算法&#xff0c;即快速傅氏变换。FFT使计算机计算离散傅里叶变换所需要的乘法次数大为减少&#xff0c;特别是被变换的抽样点数N越多&#x…

图像数据增广

目录 一、常用的图像增广方法 1、随机翻转 2、随机裁剪 3、随机颜色变换 二、图像代码实现 1、定义图像显示辅助函数 2、随机翻转 3、随机裁剪 4、随机颜色变换 5、结合多种图像增广方法 三、使用图像增广进行训练 1、下载数据集 2、读取图像并增广 3、多GPU训练 …

vue2面试题:对vue生命周期的理解

vue2面试题&#xff1a;对vue生命周期的理解 回答思路:生命周期是什么-->生命周期有哪些-->生命周期的总体流程-->数据请求在created和mouted的区别生命周期是什么生命周期有哪些生命周期的总体流程beforeCreate-->created:created&#xff1a;created-->before…

ctfshow-反序列化(web271-web276)

目录 web271 web272-273 web274 web275 web276 为什么不用分析具体为什么能成功 ,后面会有几个专题 会对php框架进行更深入的了解 这里面会专门的研究 为什么能够实现RCE 前面作为初步的熟悉 首先知道一下他的框架 知道框架的风格 知道啥版本可以用什么来打 首先先不用太研…

通用大模型研究重点之一:data embedding

研究背景 在过去的传统机器学习中&#xff0c;通常我们是直接处理同一类型的数字类型数据。随着深度学习发展&#xff0c;在图像&#xff0c;文本&#xff0c;语音领域分别取得了超越平均人类水平后&#xff0c;多模态数据的量随着互联网技术指数性增长&#xff0c;近两年自媒…

分布式 ID 的几种实现方式

随着互联网技术的快速发展&#xff0c;分布式系统在各个领域得到了广泛的应用。分布式 ID 是分布式系统中的一种重要概念&#xff0c;用于唯一标识系统中生成的各种数据。在分布式环境下&#xff0c;如何高效、可靠地生成分布式 ID 是一个具有挑战性的问题。本文将介绍几种常见…

2024最新软件测试面试题合集

1、前端和后端有什么区别 前端能够从 App 屏幕和浏览器上看到的东西。例如&#xff0c;你所看到的内容、按钮、图片&#xff0c;它们都属于前端。 后端就是那些你在屏幕上看不到但又被用来为前端提供支持的东西。网站的后端涉及搭建服务器、保存和获取数据&#xff0c;以及用于…

自定义注解与拦截器实现不规范sql拦截(自定义注解填充插件篇)

在自定义注解与拦截器实现不规范sql拦截&#xff08;拦截器实现篇&#xff09;中提到过&#xff0c;写了一个idea插件来辅助对Mapper接口中的方法添加自定义注解&#xff0c;这边记录一下插件的实现。 需求简介 在上一篇中&#xff0c;定义了一个自定义注解对需要经过where判…