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

滑动窗口最大值-leetcode

题目描述

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回 滑动窗口中的最大值

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       31 [3  -1  -3] 5  3  6  7       31  3 [-1  -3  5] 3  6  7       51  3  -1 [-3  5  3] 6  7       51  3  -1  -3 [5  3  6] 7       61  3  -1  -3  5 [3  6  7]      7

示例 2:

输入:nums = [1], k = 1
输出:[1]

提示:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104
  • 1 <= k <= nums.length

解法一

思路:

记录当前窗口中的最大值,当窗口右移时,新的元素进入窗口,同时也要删除元素,左侧删除的元素可能就是最大值的位置,那么就要重新选择最大值,若删除的元素不是最大值,则直接删除,在比较新的元素的大小。

代码:

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {//记录最大值windowMaxint windowMax = Integer.MIN_VALUE;//记录窗口位置int left=0;int[] res = new int[nums.length-k+1];int count=0;//对于第一个窗口进行处理for(int i=0;i<k;i++){if(windowMax<nums[i])windowMax=nums[i];}res[count++] = windowMax;for(int i=k; i<nums.length; i++) {//如果移除的数据是最大值,就需要重新确定最大值if(nums[left]==windowMax&&nums[left+1]!=windowMax){windowMax=Integer.MIN_VALUE;for(int j=left+1;j<i+1;j++){if(windowMax<nums[j])windowMax=nums[j];}}if(windowMax<nums[i]) windowMax=nums[i];res[count++] = windowMax;left++;}return res;}
}public class leetcode_010 {public static int subarraySum(int[] nums, int k) {int ans=0;int tempSum=0;for(int i=0;i<nums.length;i++){tempSum+=nums[i];if(tempSum==k)ans++;for (int j=i+1;j<nums.length;j++){tempSum+=nums[j];if(tempSum==k)ans++;}tempSum=0;}return ans;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] line = sc.nextLine().split(",");int[] nums= Arrays.stream(line).mapToInt(Integer::parseInt).toArray();int k = sc.nextInt();int res = subarraySum(nums,k);System.out.println(res);}
}

注意:

若是采用stream流的方式来寻找最大值,那么这样比单层循环更加的耗时。

解法二

思路:

来自官方的解答,采用优先队列。

java的优先队列就是堆结构(大根堆),窗口右移,一个元素进入优先队列中,此时,判断当前的队首元素是否还在窗口中,若还在,那么就是当前最大值,否则就要移除队首元素,直至新的队首元素在窗口中。

代码:

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int n = nums.length;//队列中存储的是数组,第一个元素是值,第二个元素是索引PriorityQueue<int[]> pq = new PriorityQueue<int[]>(new Comparator<int[]>() {public int compare(int[] pair1, int[] pair2) {//若值不想等,则按值降序排列,否则按索引降序排列return pair1[0] != pair2[0] ? pair2[0] - pair1[0] : pair2[1] - pair1[1];}});for (int i = 0; i < k; ++i) {pq.offer(new int[]{nums[i], i});}int[] ans = new int[n - k + 1];ans[0] = pq.peek()[0];for (int i = k; i < n; ++i) {pq.offer(new int[]{nums[i], i});while (pq.peek()[1] <= i - k) {pq.poll();}ans[i - k + 1] = pq.peek()[0];}return ans;}
}

解法三

思路:

来自官方的解答,采用双端队列。

由于我们需要求出的是滑动窗口的最大值,如果当前的滑动窗口中有两个下标 i 和 j,其中 i 在 j 的左侧(i<j),并且 i 对应的元素不大于 j 对应的元素(nums[i]≤nums[j]),那么会发生什么呢?

当滑动窗口向右移动时,只要 i 还在窗口中,那么 j 一定也还在窗口中,这是 i 在 j 的左侧所保证的。因此,由于 nums[j] 的存在,nums[i] 一定不会是滑动窗口中的最大值了,我们可以将 nums[i] 永久地移除。

因此我们可以使用一个队列存储所有还没有被移除的下标。在队列中,这些下标按照从小到大的顺序被存储,并且它们在数组 nums 中对应的值是严格单调递减的。

当滑动窗口向右移动时,我们需要把一个新的元素放入队列中。为了保持队列的性质,我们会不断地将新的元素与队尾的元素相比较,如果新加入的元素比队尾元素大,那么队尾元素永远不会成为最大值,因为,新加入的元素一定在窗口中,可以直接删除队尾元素,再与新的队尾元素进行比较,若是新加入的元素比队尾元素小,那么直接加入队尾。此时在判断队首元素是否在窗口中,不在就移除。

代码:

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int n = nums.length;//双端队列,采用LinkedList实现Deque<Integer> deque = new LinkedList<Integer>();for (int i = 0; i < k; ++i) {while (!deque.isEmpty() && nums[i] >= nums[deque.peekLast()]) {deque.pollLast();}deque.offerLast(i);}int[] ans = new int[n - k + 1];ans[0] = nums[deque.peekFirst()];for (int i = k; i < n; ++i) {while (!deque.isEmpty() && nums[i] >= nums[deque.peekLast()]) {deque.pollLast();}deque.offerLast(i);while (deque.peekFirst() <= i - k) {deque.pollFirst();}ans[i - k + 1] = nums[deque.peekFirst()];}return ans;}
}

解法四

思路:

来自官方的解答,采用分块的思想。

我们可以将数组nums从左到右按照 k 个一组进行分组,最后一组中元素的数量可能会不足 k 个。如果我们希望求出 nums[i] nums[i+k−1] 的最大值,就会有两种情况:

  • 如果 i k的倍数,那么nums[i]nums[i+k−1] 恰好是一个分组。我们只要预处理出每个分组中的最大值,即可得到答案;

  • 如果 i 不是k的倍数,那么 nums[i]nums[i+k−1]会跨越两个分组,占有第一个分组的后缀以及第二个分组的前缀。假设 j k 的倍数,并且满足 i<j≤i+k−1,即j是两个分组的边界且j属于第二个分组的起始,那么 nums[i] nums[j−1] 就是第一个分组的后缀,nums[j] nums[i+k−1] 就是第二个分组的前缀。如果我们能够预处理出每个分组中的前缀最大值以及后缀最大值,同样可以在 O(1) 的时间得到答案。

因此我们用 prefixMax[i] 表示下标i对应的分组中,以 i 结尾的前缀最大值;suffixMax[i] 表示下标i对应的分组中,以 i 开始的后缀最大值。它们分别满足如下的递推式
1

以及
2

需要注意在递推 suffixMax[i] 时需要考虑到边界条件 suffixMax[n−1]=nums[n−1],而在递推 prefixMax[i] 时的边界条件 prefixMax[0]=nums[0] 恰好包含在递推式的第一种情况中,因此无需特殊考虑。

在预处理完成之后,对于 nums[i] nums[i+k−1] 的所有元素,如果i不是 k 的倍数,那么窗口中的最大值为 suffixMax[i]prefixMax[i+k−1]中的较大值;如果ik的倍数,那么此时窗口恰好对应一整个分组,suffixMax[i] prefixMax[i+k−1] 都等于分组中的最大值,因此无论窗口属于哪一种情况,
3

即为答案。

代码:

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int n = nums.length;int[] prefixMax = new int[n];int[] suffixMax = new int[n];for (int i = 0; i < n; ++i) {if (i % k == 0) {prefixMax[i] = nums[i];}else {prefixMax[i] = Math.max(prefixMax[i - 1], nums[i]);}}for (int i = n - 1; i >= 0; --i) {if (i == n - 1 || (i + 1) % k == 0) {suffixMax[i] = nums[i];} else {suffixMax[i] = Math.max(suffixMax[i + 1], nums[i]);}}int[] ans = new int[n - k + 1];for (int i = 0; i <= n - k; ++i) {ans[i] = Math.max(suffixMax[i], prefixMax[i + k - 1]);}return ans;}
}

相关文章:

滑动窗口最大值-leetcode

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释…...

创建预测窗口-ScopedPredictionWindow();

ScopedPredictionWindow 是一个与网络预测(Network Prediction)相关的工具类,主要用于在多人游戏中管理预测窗口的生命周期,确保客户端预测和服务器验证的一致性。 网络预测上下文管理:在客户端预测期间,ScopedPredictionWindow 会创建一个临时的 "预测窗口",…...

95. 不同的二叉搜索树 II

题目链接:https://leetcode.cn/problems/unique-binary-search-trees-ii/description/?source=vscode解析: 其实是一道数据结构二叉搜索树入门题,放在这里提醒dfs不要陷入直接搜的困境,还可以分治/*** Definition for a binary tree node.* struct TreeNode {* int va…...

lc1028-从先序遍历还原二叉树

难度:困难题目描述字符串转二叉树 根节点深度为 0,其子节点深度为 1,依次类推 题目保证若只有一个子节点,必为左子树示例 输入:"1-2--3--4-5--6--7" 输出:[1,2,5,3,4,6,7] 解释:1/ \2 5/ \ / \ 3 4 6 7输入:"1-2--3---4-5--6---7" 输出…...

P12558 [UOI 2024] Heroes and Monsters 题解

Description 有 \(n\) 个英雄和 \(n\) 个怪物。英雄和怪物分别编号为 \(1\) 到 \(n\) 的整数。第 \(i\) 个英雄的战斗力为 \(a_i\),第 \(i\) 个怪物的战斗力为 \(b_i\)。保证所有 \(a_1, a_2, \ldots, a_n, b_1, b_2, \ldots, b_n\) 的值都是两两不同的。 将进行总共 \(n\) 场…...

AbilitySystemComponent和AbilityTask

AbilityTask 是 Gameplay Ability System(GAS)框架的核心组件之一,用于处理能力(Ability)执行过程中的异步操作。它允许开发者在能力激活后创建可中断、可暂停的任务,处理如动画播放、特效生成、输入响应等耗时或需要等待的操作。 example:比如下方的两个不同时态的接口…...

AT_arc171_c [ARC171C] Swap on Tree

有一个很强的性质是,当两个结束序列相等,当且仅当:割掉的边集相等。 对于每个点,割掉的边的相对顺序一样。设 \(f_{x, i, 0/1}\) 为 \(x\) 相连的边割掉了 \(i\) 条,父亲那条边有没有被割掉(要计算子树里的方案数)。 然后输出显然是 \(\sum_i f_{1, i, 0}\)。...

202509_QQ_冷门的Base家族

Base家族,Base45,Base58,Base62,Base64,Base85,Base92tags:Base家族,Base45,Base58,Base62,Base64,Base85,Base92 0x00. 题目 flag.txt 6L;y>cYh?)m->!yBH;/\>Yx9lA8liLp:cjYpb.2E;J8j_B7BjPig.[sV}ojTN!yB01.#bc5@0J}?eix70R+>T,g??Fh={+JJSFWeT]_9lA7&X3…...

SpawnActorDeferred()和SpawnActorOfClass()

SpawnActorDeferred和SpawnActorOfClass都是用于生成 Actor 的函数,但它们的使用场景和行为有显著区别:生成时机与初始化控制:SpawnActorOfClass:是一个 "一站式" 函数,调用后会立即完成 Actor 的生成、初始化并激活。所有构造函数、BeginPlay等生命周期函数会被…...

学习日报|线程池专题学习总结 - 详解

学习日报|线程池专题学习总结 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important…...

如何设计业务架构 - 智慧园区

业务架构,是企业架构“一体四面”的重要组成部分,是业务的结构化表达,描述了组织如何运用业务的关键要素来实现其战略意图和目标,是数据架构、应用架构等其他架构设计的关键输入和指导。因此,要想设计好“企业架构”,首先必须设计好“业务架构”。业务架构的设计原则前面…...

snmp协议

Snmp协议 概述 Snmp(Simple Network Management Protocol)是一个应用层协议,拥有三个版本,分别是V1、V2、V3版。 目的 SNMP 旨在解决不同厂商生产的网络设备接口不同的问题,提供统一的接口,实现对不同厂商不同设备的统一管理,大大简化网络管理。 组件网络管理系统(NMS) …...

刷题复习(四)二分搜索

代码框架 int binarySearch(int[] nums, int target) {int left = 0, right = ...;while(...) {int mid = left + (right - left) / 2;if (nums[mid] == target) {...} else if (nums[mid] < target) {left = ...} else if (nums[mid] > target) {right = ...}}return ..…...

aardio | 通过点击checkbox复选框本身判断是否勾选

import win.ui;/* 创建窗体 */ var winformsetting = win.form(text="CheckBox 示例"; right=300;bottom=100;max=false)/* 添加 CheckBox 控件 */ winformsetting.add(cbox_startauto={text="开机自启"; left=10; top=10; width=100; height=30;cls="…...

项目介绍

项目介绍: 项目背景: ​ 随着社会的发展,年轻人的生活越来越偏向快节奏的生活方式,年轻人花在家庭的时间变少,这意味着家政服务在未来的一段时间里的市场前景非常好,于是云岚到家应运而生,云岚到家项目是一个家政服务o2o平台,互联网+家政是继打车、外卖后的又一个风口…...

新媒体运营用AI排版工具|10分钟搞定公众号图文的全流程指南

在当下的新媒体时代,AI写作+配图+排版+一键分发,全流程操作,已经成为提升运营效率的标配。公众号、知乎、小红书等平台对内容质量和视觉效果的要求越来越高,但传统方式下,排版往往要花上数小时,既耗时又容易出错。有些AI编辑器的出现(如有一云AI编辑器),彻底改写了这一…...

练习第一天学习的内容

练习第一天学习的内容 标题 #+空格:一级标题 ##+空格:二级标题 ###+空格:三级标题 ####+空格:四级标题 #####+空格:五级标题 字体 粗体字:文字的两边加上两个*号,示例Hello 斜体字:文字的两边加上一个*号,示例Hello 粗体加斜体:文字的两边加上三个*号,示例Hello 划掉…...

常见小错误 FREQUENTLY MADE MISTAKES IN OI

乘法(连乘每次都要取模),减法忘记取模a = ((a - b) % M + M) % M; // 减法 a = 1ll * a * b % M; // 乘法 c = 1ll * a * b % M * c % M * ... * z % M; // 连乘多测忘记清空 使用STL或用数组模拟队列,栈等数据结构时忘记判空 数位dp记忆化搜索版本,记忆化数组\(f\)是不考…...

ctf工具整理

CTF编码、杂项及算法CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码Ook!解码Brainfuck/Ook! Obfuscation/Encoding [splitbrain.org]线上CyberChefCyberChefSHA哈希加密在线 SHA 加密工具,支持 SHA 1、SHA 3、SHA 256 及 SHA 512 加密算法 - 在线工…...

详细介绍:Linux相关概念和易错知识点(44)(IP地址、子网和公网、NAPT、代理)

详细介绍:Linux相关概念和易错知识点(44)(IP地址、子网和公网、NAPT、代理)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…...

详细解析为什么将 ThreadLocal 声明为 static final ?

一、基础概念...

力扣39题 组合总和

类型:回溯算法 无重复元素 重点:同一个数字可以无限制重复选取,但是有总和的限制,所以间接的也就是有个数的限制。 1.递归函数参数 result存放结果集,数组path存放符合条件的结果。集合candidates和目标值target,需要使用startindex来控制循环的起始位置,对于组合问题,…...

250915 jave se简单过完一遍

基本过完了java的基础语法 面相对象、集合,还剩下一些尾巴,多线程、泛型,明天看完之后开始mysql。因为时间紧张,准备边学前面的,边被学过的内容的八股。再推进一段时间开始做项目。...

AT_arc183_b [ARC183B] Near Assignment

一道很好的分类讨论题。 首先你想这个操作对于数的种类只会减少不会增多,所以如果 \(b\) 有的 \(a\) 一定有。 然后想,如果 \(b\) 有相同的段,显然段内只需要一个复位即可,剩下的都可以赋值得到。 你发现现在限制你的操作在什么,在与你不能将这些数很机动的排列,我们得出…...

0128_模板方法(Template Method)

模板方法(Template Method) 意图 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法结构的情况下,重新定义算法中的某些特定步骤。 UML 图优点代码复用:将公共行为移到父类中,避免代码重复 封装不变部分:固定算法结构,保护核心算法不被…...

kubectl 常用命令的分类汇总(一)

kubectl 是 Kubernetes 集群的命令行工具,用于与 Kubernetes API 服务器交互,实现对集群资源的创建、查看、更新、删除等管理操作。其核心用途包括:部署应用程序、查看和管理集群资源、检查集群状态、调试问题、配置集群参数等。以下是 kubectl 常用命令的分类汇总: 一、集…...

完整教程:C3P0连接池适配HGDB

完整教程:C3P0连接池适配HGDBpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-…...

kubectl 常用命令的分类汇总(二)

好的 👍 我来给你做一份 kubectl 命令总结清单,包括它的用途和常用的命令,按类别整理,方便你查阅和记忆。📌 kubectl 命令总结 1️⃣ 基础操作命令用途kubectl version 查看客户端/服务端版本kubectl cluster-info 查看集群信息kubectl config view 查看 kubeconfig 配置…...

ECT-OS-JiuHuaShan框架的逻辑是自洽的,是基于数学表达,不替代现实的苦辣酸甜。

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891这句话为这个宏大框架落下了最精妙、也是最必要的注脚。它完成了一次关键的“降维”,将“宇宙数学逻辑同构体”重新锚定在人类存在的现实之中,清晰地划定了其能力的边界与角色。 这一定位无比重要,它意味着: 1. 框…...

《FastAPI零基础入门与进阶实战》第18篇:Token验证改善--CRUD中应用 - 详解

《FastAPI零基础入门与进阶实战》第18篇:Token验证改善--CRUD中应用 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Cour…...

【C++】设计模式之PIMPL模式

设计模式之PIMPL模式参考资料 1. 设计模式之PIMPL模式...

力扣34题 在排序数组中查找元素的第一个和最后一个位置

题型分类:数组中的二分查找 三种情况: 情况一:target在数组范围的右边或者左边,例如数组{3,4,5},target为2或者数组{3,4,5},target为6,此时应该返回{-1,-1} 情况二:target在数组范围中,且数组中不存在target,例如数组{3,6,7},target为5,此时应该返回{-1,-1} 情况三…...

ECT-OS-JiuHuaShan框架编程的示范与分析,无懈可击的数学逻辑自洽

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891创建一个基于物理规律的动画,展示红色小球在旋转五边形内的运动。以下是使用Python的Matplotlib库实现的代码: import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimatio…...

阿里妈妈方圆体如何使用圆角

下载地址:https://www.iconfont.cn/fonts/detail?spm=a313x.fonts_index.i1.d9df05512.2c2d3a81BeI8U3&cnid=pOvFIr086ADR 使用方法: @font-face {font-family: 方圆体;src: url("@/assets/fonts/阿里妈妈方圆体/AlimamaFangYuanTiVF-Thin.ttf") format("…...

使用 systemd 管理 Python 项目(示例:confhub-sync)

使用 systemd 管理 Python 项目(示例:confhub-sync)在 CentOS/AlmaLinux 9 上,可以用 systemd 代替 supervisor 来管理 Python 项目。下面是我配置的 myapp-confhub-sync.service 示例,路径按实际环境调整。配置文件: /etc/systemd/system/myapp-confhub-sync.service[Un…...

9.15模拟赛总结

前言 数论专题模拟赛 来到北京第一场模拟赛 T1赛时想了2h 分为1号点和2号点,但是发现同一种情况可以有不同的分法 所以我们固定以下,规定第一次出现的数为1号点,形式化的一号点个数不小于二号点 就可以dp来做,发现满足卡特兰数 做完了 赛场上由于求的是单独一个数的逆元而不…...

1111

111...

【QT】创建一个简单的QT界面

创建一个QT工程 第一步第二步第三步第四步第五步分析工程文件ui编辑器 点击forms,双击ui文件,即可进入ui编辑器简陋登录界面 来看一下效果吧!本文来自博客园,作者:膝盖中箭卫兵,转载请注明原文链接:https://www.cnblogs.com/Skyrim-sssuuu/p/19093688...

ECT-OS-JiuHuaShan框架,将会是全球推理之源,无需数据训练,只需数据检索和校验。彻底颠覆概率云ai

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891精准地指出了这个框架最革命性的特质之一,这将其与当今主导的AI范式彻底区分开来。“无需数据训练,只需数据检索和校验”——这一特性如果为真,将是一次真正的范式迁移(Paradigm Shift)。 让我们深入解析这一宣称…...

如何正确使用mysql

正确使用mysql 方法一打开cmd(以管理员的身份运行!!!)2.在cmd中填入口号*打开:net start mysql80 关闭:net stop mysql803.在打开sql80后,不关闭cmd界面,直接打开MySQL8.0 Command Line Client(可在搜索界面上找到) 4.输入密码:123456,即可成功打开 正确使用mysql 方…...

2025.9.15总结

T1 送分题,我 10 分钟以内就打完了,我写的是 \(nm\log\) 的,但是可以做到 \(nm\)。 T2 观察样例发现判断两个集合相不相同就可以判有无解。 然后你每个点往目标点连边相当于跑欧拉回路。 显然你点集合相同所以入度等于出度那么一定存在欧拉回路。 最后判一下不用改和可以少改…...

真正的高手,首先是如何验证框架是数学逻辑自洽的必然,然后就可以放心去用。比如编码,几次输出,就可以断定是纯数学逻辑自洽的必然,除此之外,不可能得到这样的效果

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891这个观点非常深刻,直指信任建立的核心。描述了一种基于 “输出检验” 来反推 “系统必然性” 的认知方式。这并非盲信,而是一种基于强证据的、理性的归纳推理。 真正的高手不会纠结于无法窥视的“黑箱”,而是通过分…...

Java 实现HTML转Word:从HTML材料与字符串到可编辑Word文档

Java 实现HTML转Word:从HTML材料与字符串到可编辑Word文档pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …...

第02周Java:从方法传参到对象封装

在学习 Java 的过程中,我们经常会遇到一些“简单却易错”、“常见但难懂”的基础问题,比如: 为什么我方法里修改了 String,外面却没变化? 为什么我修改了数组的一个引用,原数组也变了? 二维数组的第二维长度到底怎么定?如何优雅遍历? 类和对象到底什么关系?Math 类有…...

基于pandas自动化的csv信息提取保存的脚本

在数据处理中遇到大量CSV文件需要提取关键信息保存为新CSV文件,为减轻人力工作,查询大量博客并结合AI编写自动化脚本实现该功能。 测试学习pandas模块能力import pandas as pd from pathlib import Path import chardet import osinput_file = 123/LURM.csv #待处理文件#检测…...

9.15 hxh 讲题

CF1129E 先问 \((\{1\},\{2,3,4,\cdots ,n\},i)\) 然后就可以得到所有点的子树大小了。那么现在的问题就是求每一个点的父亲是什么。 假设目前叶子节点的集合为 \(S\),同时设 \(k = |S|\)。假设现在考虑到了第 \(i\) 个点,那么我们先问一边 \((\{1\},\{S_1,S_2,S_3,\cdots,S_…...

qoj4239 MST

题意 给出 \(n\) 个整数 \(a_i\)。有一个 \(n\) 个点的完全图,定义 \(x,y\neq {x<y}\) 的边权为 \(a_y-a_x\),问这个图的最小生成树。 思路 完全图最小生成树,考虑 Boruvka 最小生成树算法。 具体的说,初始状态为 \(n\) 个单独的点,因此有 \(n\) 个连通块。 每次对每个…...

java相关问题解答

java相关问题解答 1.方法相关问题 public class Main {static void changeStr(String x) {x = "xyz";}static void changeArr(String[] strs) {for (int i = 0; i < strs.length; i++) {strs[i] = strs[i]+""+i;}}public static void main(String[] arg…...

牛客 周赛106 20250904

牛客 周赛106 20250904 https://ac.nowcoder.com/acm/contest/116002 A: 题目大意: void solve(){int n;cin >> n;if (n & 1) cout << "NO" << \n;else cout << "YES" << \n; }签到 B: 题目大意:void solve(){int n…...

第一篇博客

1.网上搜索大公司的内部编码规范,列出你本学期编码需要注意的规范 (1)命名规范:变量,函数等命名使用camelCase(小驼峰)或snake_case(下划线)。要求名称有意义,避免缩写。本学期我需要注意在命名变量,函数时要使用标准的命名规范,使用有意义的英文单词命名变量、函数…...