Fixed win size sliding window

这篇记录灵神题单中的定长滑窗环节,不跟之前的Sliding Window一起了。

1. LC 1423 可获得的最大点数

这题其实有点思维的。实现上简单。

每次从首或者尾部拿,总共拿k次。相当于有n-k张牌不拿。因为不可能从中间截断着拿,因此必然这n-k张牌是连续的,所以就变成定长n-k滑窗。更新维护最小值,最终拿总和减掉最小值就是能拿的最大值。

import java.util.HashMap;class Solution {public int maxScore(int[] cardPoints, int k) {int sum = 0;for (int cardPoint : cardPoints) {sum+=cardPoint;}int rest = 0;int n = cardPoints.length;for (int i = 0; i < (n - k); i++) {rest += cardPoints[i];}int min = rest;for(int i=1;i<=k;i++){rest = rest - cardPoints[i-1]+cardPoints[i+n-k-1];min = Math.min(min,rest);}return (sum-min);}
}

2. LC 2134 最少交换次数来组合所有的1Ⅱ

这题是任意位置交换,不是相邻位置。有时间想想相邻交换要怎么做。

统计所有1的个数,统计当前区间(区间长度就是这个个数,因为把所有1聚集起来)的1的个数,差就是交换次数,维护最小值即可。统计区间的1很显然是个滑窗,环形数组取余即可。

import java.util.Arrays;class Solution {public int minSwaps(int[] nums) {int oT = 0;for (int num : nums) {oT += num==1?1:0;}int ans = oT+1;int t = 0;for(int i=0;i<oT;i++){t += nums[i]==1?1:0;}ans = Math.min(ans,oT-t);for(int i=1;i<nums.length;i++){t += (nums[i-1]==1?-1:0) + (nums[(i+oT-1)%nums.length]==1?1:0);ans = Math.min(ans,oT-t);}return ans;}
}

3. LC 2653 滑动子数组的美丽值

这题我写的很丑。

大致思路就是模拟,每个窗口更新维护一个有序哈希表,里面只存放负数的数量,然后从小到大累加各个负数的数量,直到找到第k小。

这种题用数组自己模拟比官方库快多了

import java.util.*;class Solution {public int[] getSubarrayBeauty(int[] nums, int k, int x) {int n = nums.length;int[] ans = new int[n - k + 1];Arrays.fill(ans,0);TreeMap<Integer, Integer> tm = new TreeMap<>();for (int i = 0; i < k; i++) {if(nums[i]<0){mAdd(tm,nums[i]);}}iter(ans,x,tm,0);for(int i=1;i<=n-k;i++){if(nums[i-1]<0){mRemove(tm,nums[i-1]);}if(nums[i+k-1]<0){mAdd(tm,nums[i+k-1]);}iter(ans,x,tm,i);}return ans;}private void iter(int[] ans,int x,Map<Integer,Integer> m,int index){int t = 0;for (Map.Entry<Integer, Integer> next : m.entrySet()) {t += next.getValue();if (t >= x) {ans[index] = next.getKey();return;}}}private void mAdd(Map<Integer,Integer> m,int num){m.put(num,m.getOrDefault(num,0)+1);}private void mRemove(Map<Integer,Integer> m,int num){Integer t = m.get(num);if(null==t){return;}if(1==t){m.remove(num);return;}m.put(num,t-1);}
}

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

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

相关文章

分布式(2)

目录 6.Ribbon和Feign的区别有哪些&#xff1f; 7.SpringCloud和dubbo有什么区别&#xff1f; 8.服务注册和发现是什么意思&#xff1f;SpringCloud如何实现&#xff1f; 9.介绍下网关的作用&#xff1f; 10.谈谈服务降级&#xff0c;熔断&#xff0c;服务隔离&#xff1f;…

机器学习(四) -- 模型评估(3)

系列文章目录 机器学习&#xff08;一&#xff09; -- 概述 机器学习&#xff08;二&#xff09; -- 数据预处理&#xff08;1-3&#xff09; 机器学习&#xff08;三&#xff09; -- 特征工程&#xff08;1-2&#xff09; 机器学习&#xff08;四&#xff09; -- 模型评估…

通货紧缩,通货膨胀

目录 通货紧缩 通货膨胀 通货紧缩 是一个与通货膨胀相对应的经济学概念&#xff0c;是由货币供给量相对于经济增长和劳动生产率提高等要素减少而引致的有效需求严重不足 一般物价水平持续下跌&#xff0c;货币供给量持续下降和经济衰退的现象。当市场上流通的货币减少&…

探索 OceanBase 中图数据的实现

在数据管理和处理的现代环境中&#xff0c;对能够处理复杂数据结构的复杂数据模型和方法的需求从未如此迫切。图数据的出现以其自然直观地表示复杂关系的独特能力&#xff0c;开辟了数据分析的新领域。 虽然 Neo4j 等成熟的图形数据库为处理图形数据提供了强大的解决方案&…

Python从入门到网络爬虫(模块详解)

模块 我们知道&#xff0c;函数和类都是可以重复调用的代码块。在程序中使用位于不同文件的代码块的方法是&#xff1a;导入 (import) 该对象所在的模块 (mudule)。当程序变得越来越大时&#xff0c;将程序的不同部分根据不同分类方法保存在不同文件中通常会更加方便。 导入模…

python抓取异步数据(加载更多类型的),并下载图片,保存到文件夹,实例

源码: {"subjects":[{"episodes_info":"","rate":"8.8","cover_x":3000,"title":"奥本海默","url":"https:\/\/movie.douban.com\/subject\/35593344\/","playabl…

hydra爆破

导语 Hydra 是一个用于暴力破解登录凭据的网络安全工具。它可以通过尝试多个用户名和密码组合来攻击目标系统,以获得未经授权的访问权限。 Hydra 支持多种协议和服务,包括常见的 SSH、FTP、Telnet、HTTP、SMTP 等。它可以通过使用字典文件或生成密码的模式进行强制破解。可以…

如何理解Transformer论文中的positional encoding,和三角函数有什么关系?

大家好&#xff0c;我分享交流下这个问题。 Positional Encoding 掏出一张被无数人讲述的架构图。 Transformer 模型中的位置编码&#xff08;Positional Encoding&#xff09;是为了让模型能够考虑单词在句子中的位置。 由于 Transformer 的自注意力&#xff08;Self-Atte…

bat批处理文件_bat注释汇总

文章目录 1、示例&#xff08;直接结合脚本和结果进行理解&#xff09; 1、示例&#xff08;直接结合脚本和结果进行理解&#xff09; %这是一个注释% %这是另一个注释%rem 这是一个注释 rem 这是另一个注释:这是一个注释 ::这是一个注释 :?这是另一个注释if 1 1 ( %这里会执…

Golang 切片

前言 在Go语言中&#xff0c;切片是一个引用类型&#xff0c;它提供了对数组的动态窗口。切片并不存储任何数据&#xff0c;它只是描述了底层数组中的一个片段。切片的定义包括三个部分&#xff1a;指向数组的指针、切片的长度和切片的容量 基本使用 声明切片&#xff1a;声…

Django在urls.py利用函数path()配置路由时传递参数给调用的视图函数的方法

01-单个参数的传递 问&#xff1a;在urls.py利用函数path()配置路由时能不能传递一些参数给调用的视图函数&#xff1f;因为我有很多路由调用的其实是同一个视图函数&#xff0c;所以希望能传递一些额外的参数。比如路由的PATH信息如果能传递就好了。 答&#xff1a;在Django中…

伐木工 - 华为OD统一考试

OD统一考试 题解&#xff1a; Java / Python / C 题目描述 一根X米长的树木&#xff0c;伐木工切割成不同长度的木材后进行交易&#xff0c;交易价格为每根木头长度的乘积。规定切割后的每根木头长度都为正整数,也可以不切割&#xff0c;直接拿整根树木进行交易。请问伐木工如…

MySQL 日期比较

MySQL日期格式比较常用的两个函数是DATEDIFF()和TIMESTAMPDIFF()。 DATEDIFF SELECT DATEDIFF(2023-12-31 23:59:59, 2023-12-30); # 1SELECT DATEDIFF(2023-11-30 23:59:59, 2023-12-31); # -31第一个参数减去第二个参数得到的天数。 TIMESTAMPDIFF SELECT TIMESTAMPDIFF(…

libexif库介绍

libexif是一个用于解析、编辑和保存EXIF数据的库。它支持EXIF 2.1标准(以及2.2中的大多数)中描述的所有EXIF标签。它是用纯C语言编写的&#xff0c;不需要任何额外的库。源码地址&#xff1a;https://github.com/libexif/libexif &#xff0c;最新发布版本为0.6.24&#xff0c;…

计算圆弧的起始角度、终止角度和矩形信息并使用drawArc绘制圆弧

Qt中常用绘制圆弧的库函数&#xff1a; //函数原型 void QPainter::drawArc(const QRectF &rectangle, int startAngle, int spanAngle)Qt规定1约占16个像素&#xff0c;比如一个完整的圆等于360度&#xff0c;对应的像素角度就是 5760度&#xff08;16 * 360&#xff09;…

深度学习中的自动化标签转换:对数据集所有标签做映射转换

在机器学习中&#xff0c;特别是在涉及图像识别或分类的项目中&#xff0c;标签数据的组织和准确性至关重要。本文探讨了一个旨在高效转换标签数据的 Python 脚本。该脚本在需要更新或更改类标签的场景中特别有用&#xff0c;这是正在进行的机器学习项目中的常见任务。我们将逐…

基于JavaWeb+SSM+Vue家政项目微信小程序系统的设计和实现

基于JavaWebSSMVue家政项目微信小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2…

如何使用RESTful API构建 web 应用程序

RESTful API 是一种设计风格&#xff0c;用于构建可扩展、灵活和可维护的 web 应用程序。它是一种基于 HTTP 协议的架构风格&#xff0c;旨在提供一组规范和约束&#xff0c;以便客户端和服务器之间的通信更加简单和可预测。 RESTful API 通过使用 HTTP 动词来定义资源的操作&…

【DevOps-01]】DevOps介绍

一、简要描述 DevOps:Development & Operations的缩写,也就是开发&运维 DevOps是一个不断提高效率并且持续不断工作的过程。 核心:简化Dev和Ops团队之间的流程,使整体软件开发过程更快速。 DevOps定义: DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和…

数据结构OJ实验16-选择排序与堆排序与归并排序

A. DS排序--简单选择排序 题目描述 给出一个数据序列&#xff0c;使用简单选择排序算法进行升序排序。 输入 第一行输入t&#xff0c;表示有t个测试示例 第二行输入n&#xff0c;表示第一个示例有n个数据(n>1) 第三行输入n个数据&#xff0c;都是正整数&#xff0c;数据…