Kimi LeetCode 3420. 统计 K 次操作以内得到非递减子数组的数目 C++实现
📅 2026/6/30 22:44:28
👁️ 次浏览
以下是 LeetCode 3420. 统计 K 次操作以内得到非递减子数组的数目 的 C 实现。---解题思路这道题的核心是 从右往左滑动窗口 单调队列时间复杂度 O(n)空间复杂度 O(n)。关键观察1. 单调性如果一个子数组 [i, j] 可以在 k 次操作内变为非递减那么它的所有子数组如 [i1, j]、[i, j-1] 等也一定可以。这满足了双指针的单调性条件。2. 为什么从右往左 从左往右扩展窗口时移除左边元素会影响右边元素的依赖关系处理极其复杂。而从右往左时新元素在左边只会影响右边已在窗口中的元素加边操作比删边简单得多。3. 单调队列的作用队列中存储的是 数值, 个数 对按数值非递增排列。它表示当前窗口在调整为非递减后每个平台的高度和覆盖的原始元素个数。- 当新元素 num 进入窗口时它会吸收队列尾部所有比它小的平台因为这些平台必须被提升到至少 num 的高度才能非递减。- 操作次数增加量 (num - 小平台高度) × 小平台元素个数。4. 窗口收缩当操作次数超过 k 时从右侧移除元素。最右侧的元素被恢复为原始值操作次数相应减少。---C 完整代码cpp#include bits/stdc.husing namespace std;class Solution {public:long long countNonDecreasingSubarrays(vectorint nums, int k) {long long ans 0;long long cost 0;// 单调队列存储 数值, 个数 对按数值非递增顺序排列dequepairint, long long dq;// i: 窗口左端点从右往左移动// j: 窗口右端点只会向左收缩for (int i nums.size() - 1, j nums.size() - 1; i 0; --i) {const int num nums[i];long long count 1;// 新元素 num 进入窗口吸收队列尾部比它小的平台while (!dq.empty() dq.back().first num) {auto [nextNum, nextCount] dq.back();dq.pop_back();count nextCount;cost static_castlong long(num - nextNum) * nextCount;}dq.emplace_back(num, count);// 操作次数超限从右侧缩小窗口while (cost k) {auto [rightmostNum, rightmostCount] dq.front();dq.pop_front();cost - static_castlong long(rightmostNum - nums[j]);j--;if (rightmostCount 1) {dq.emplace_front(rightmostNum, rightmostCount - 1);}}// 以 i 为左端点[i, j] 范围内的所有子数组都满足条件ans j - i 1;}return ans;}};---测试验证输入 输出 说明nums [6,3,1,2,4,4], k 7 17 21 个子数组中 4 个不满足nums [6,3,1,3,6], k 4 12 官方示例 2nums [5], k 0 1 单元素天然非递减nums [1,2,3,4,5], k 0 15 已非递减全部满足nums [5,4,3,2,1], k 100 15 k 足够大全部满足nums [10,1,1,1], k 2 7 k 很小的情况下载完整代码[leetcode_3420.cpp](sandbox:///mnt/agents/output/leetcode_3420.cpp)
嵌入式开发实战:IMX6ULL开发板RTL8723BU网卡驱动全流程解析刚拿到韦东山IMX6ULL开发板时,配置无线网络往往是第一个需要攻克的难题。不同于PC环境,嵌入式设备的WiFi驱动需要针对特定内核版本进行交叉编译,整个过程涉及环境配置、源…
📅 2026/6/30 22:44:28
1. 项目概述:为什么需要一对一IPSec隧道?在网络安全领域,防火墙作为内外网之间的“守门人”,其重要性不言而喻。而IPSec(Internet Protocol Security)协议,则是保障数据在公共网络上(…
📅 2026/6/30 22:42:27
前言
做图像降噪、无线通信仿真、传感器建模、深度学习数据增强时,高斯噪声是全球通用的标准干扰模型。90% 初学者只会复制np.random.normal一行代码加噪,但完全无法回答面试核心问题: 为什么现实硬件干扰大多能用高斯分布建模?底层理论依据是什么? 高斯噪声完整数学公式…
📅 2026/6/30 22:42:27
源代码数据库LW文档(1万字以上)开题报告答辩稿ppt部署教程代码讲解代码时间修改工具
技术实现
开发语言:后端:Java 前端:vue框架:springboot数据库:mysql
开发工具
JDK版本:JDK1.8
数…
📅 2026/6/30 23:48:37
本文实为《深入理解分布式系统》一书的读书笔记,意在帮助博主整理知识点用,同时也希望能够对其他读者有所帮助。
分布式系统的主要挑战
网络延迟问题
无法保证数据能够到达 消息丢失 无法保证数据什么时候到达 以为消息丢了 重复消息服务误下线 消息乱…
📅 2026/6/30 23:48:36
摘要:在AI大模型训练、商业情报分析、学术研究等领域,高质量数据是核心生产要素。然而,随着Web技术栈的复杂化与反爬体系的升级,“写个脚本抓数据”的时代早已终结。本文跳出入门教程的窠臼,从协议层、渲染层、对抗层、工程层四个维度,系统解构现代数据采集技术的底层逻辑…
📅 2026/6/30 23:48:36
云数据中心安全建设 结构化表(第十六批40条目,S-531至S-570) 编号 类型 领域 问题 详细的数学分析(逐步推理) 参数列表及每个参数的数学表达式及每个参数的数值范围及边界条件及测量方法 关联知识 S-531 数据 模型蒸馏 教师模型与学生模型之间的知识蒸馏损失(…
📅 2026/6/30 23:48:36
在计算机编程和系统管理中,“内存” 和 “占内存” 是两个相关但含义不同的概念:内存(Memory)定义:内存是计算机中用于暂时存储数据和程序指令的硬件组件,通常指随机存取存储器(RAM)…
📅 2026/6/30 23:48:36
Loop Engineering 实操篇:手把手教你写第一个 Loop适合人群:用过 Claude Code 的开发者、想让 AI 自动修 Bug 的效率控、上篇看完想动手的技术人01 先别急,你真需要 Loop 吗上一篇我们聊了 Loop Engineering 是什么。评论区问得最多的一句&am…
📅 2026/6/30 23:46:36
如何永久备份微信聊天记录:本地化数据管理完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…
📅 2026/6/30 0:01:32
Mate Engine技术深度解析:开源VRM虚拟桌面伴侣的架构与实现 【免费下载链接】Mate-Engine A free Desktop Mate alternative with a lightweight interface and custom VRM support, though with more features. 项目地址: https://gitcode.com/gh_mirrors/ma/Mat…
📅 2026/6/30 0:01:32
专业级Windows系统优化工具:WinUtil一站式自动化解决方案 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil
Windows系统管理长期以来…
📅 2026/6/30 0:01:32
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/6/30 10:04:37
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/6/30 6:54:54