A003-算法-滑动窗口队列(未测试)

网易提前批测开笔试攻略:题型考点、编程题与测试设计题全解析 软件测试开发工程师的笔试,往往不只是考察单纯的编码能力,更看重候选人的测试思维与工程化素养。理解测试用例设计方法、掌握常见数据结构和算法原理,是应对大厂笔试的基础。这类考核的价值在于筛选出既懂开发、又具备探索性测试意识的人才,广泛适用于校招提前批、正式批等多个场景。网易提前批测开笔试以其题量大、覆盖广、风格独特著称,尤其侧重测试基础知识和测试设计题。本文从题型结构、考点分布、编程题实战思路、测试用例设计模板到备考路线,系统拆解了如何高效准备这场笔试,帮助你在有限时间内最大化得分,顺利晋级面试。 阅读详情

一、 基础型


队列定义:

#define DATA_LIST_MAX  64

static uint8_t data_list[DATA_LIST_MAX] = {0};
static uint8_t data_index = 0;

数据进出:

uint8_t data_list_access(uint8_t data)
{
    uint8_t temp;
    data_index = (data_index >= _countof(data_list)) ? 0 : data_index;
    temp = data_list[data_index];
    data_list[data_index] = data;
    data_index++;
    return temp;
}

应用于均值滤波:

static uint8_t data_average = 0;

// ==========================================================================================================
// 初始化完成后,每次都将新值放入队列、并求出均值
// 
// 运算过程说明(假设队列长度为n = 8):
// 1、之前的均值age1 = (a0 + a1 + ... + a7) / n  // 包含ai
// 2、现在有了新值data_new,我们将它插入第i个位置、ai被替换成了data_new
//    那么此时的均值age2 = (a0 + a1 + ... + a7 + data_new) / n  // 不包含ai
//                       = (a0 + a1 + ... + a7 + data_new + ai - ai) / n
//                       = (a0 + a1 + ... + a7 + ai + data_new - ai) / n
//                       = age1 + (data_new- ai) / n
//    也就是说我们不需要每次都重新计算数据的和
// 3、有符号数不能用移位来优化除法,所以这里使用uint16_t 配合三目运算符来求差值
//    负数是以补码而不是原码的形式存储并参与运算,所以不能用移位替代除法
//    同时有符号数的操作也慢些
// 
// ==========================================================================================================
uint8_t data_list_average(uint8_t data)
{
    uint16_t data_old;
    uint16_t data_new = data;
    uint16_t average  = data_average;

    data_old  = data_list_access(data);
    if(data_new >= data_old)
    {
        average += (data_new - data_old) / _countof(data_list);  // 变大
    }
    else
    {
        average -= (data_old - data_new) / _countof(data_list);  // 变小(average遇到突然变得很小的数值怎么办。。。。。)
    }
    data_average = (uint8_t)average;
}


二、 公用型

多个环形队列公用同一组滑动窗口处理函数

队列定义:

typedef struct 
{
    uint8_t *list;  // 用于遍历队列
    uint8_t  size;
    uint8_t  index;
    uint8_t  average;
}T_DATA_LIST_ITEM, *pT_DATA_LIST_ITEM;

// 具体的某一个用户
#define DATA_LIST_USER01_MAX  64
static uint8_t ram_list_user01[DATA_LIST_USER01_MAX] = {0};

static T_DATA_LIST_ITEM list_user01 = { .list    = &ram_list_user01[0],  // 第一个元素
                                        .size    =  sizeof(ram_list_user01),
                                        .index   =  0, // 第一个元素
                                        .average =  0,
                                      };

数据进出:

uint8_t data_list_access(pT_DATA_LIST_ITEM p_list, uint8_t data)
{
    uint8_t temp;

    p_list->index = (p_list->index >= p_list->size) ? 0 : p_list->index;
    temp = *(p_list->list + p_list->index);
    *(p_list->list + p_list->index) = data;
    p_list->index++;
    return temp;
}

应用于均值滤波:

// ==========================================================================================================
// 初始化完成后,每次都将新值放入队列、并求出均值
// 
// 运算过程说明(假设队列长度为n = 8):
// 1、之前的均值age1 = (a0 + a1 + ... + a7) / n  // 包含ai
// 2、现在有了新值data_new,我们将它插入第i个位置、ai被替换成了data_new
//    那么此时的均值age2 = (a0 + a1 + ... + a7 + data_new) / n  // 不包含ai
//                     = (a0 + a1 + ... + a7 + data_new + ai - ai) / n
//                     = (a0 + a1 + ... + a7 + ai + data_new - ai) / n
//                     = age1 + (data_new- ai) / n
//    也就是说我们不需要每次都重新计算数据的和
// 3、avr gcc编译器不会优化有符号数的除法,所以这里使用uint8_t来求差值
//    负数是以补码而不是原码的形式存储并参与运算,所以不能用移位替代除法
//    同时有符号数的操作也慢些
// 
// ==========================================================================================================
vodi data_list_average(pT_DATA_LIST_ITEM p_list, uint8_t data)
{
    uint8_t data_old;
    uint8_t data_new = data;
    uint8_t average  = p_list->average;

    data_old  = data_list_access(p_list, data);
    if(data_new >= data_old)
    {
        average += (data_new - data_old) / p_list->size;  // 变大
    }
    else
    {
        average -= (data_old - data_new) / p_list->size;  // 变小(average遇到突然变得很小的数值怎么办。。。。。)
    }
    p_list->average = average;
}


使用举例:

data_list_average(&list_user01, get_data());


三、 普适型

struct中增加一个type参数来说明每个数据的长度,例如:type = sizeof(ram_list_user01[0])。
再使用void *list来指向任意类型的数据(类型强制转换:list = (void *)(&ram_list_user01[0])。
这样就可以处理任意类型的数据的滑动窗口了。
这属于面向对象的设计么……?


工业级遗传算法实战:5个致命细节与7步工程化落地 遗传算法作为经典的启发式优化方法,其核心在于模拟自然选择过程在解空间中搜索最优解。然而在真实工业场景中,标准理论框架常因适应度函数失真、种群多样性坍塌、终止条件脱离业务语义等关键问题而失效。本文聚焦浮点编码、自适应变异、精英策略动态调控、三层适应度建模及三维终止判据等技术要点,强调算法必须与物理约束、设备离散性、仿真耗时、产线鲁棒性深度耦合。通过27个落地项目验证,揭示种群规模非越大越好、精英保留不是简单复制、并行化需分层调度等反直觉但高实效的工程规律,为智能制造、参数调优与路径规划等典型应用提供可复用的工 阅读详情

相关推荐

Java版LeetCode高频题实战代码包,含30道面试常考题的可运行实现

这个资源包整理了30道LeetCode真实面试高频题的Java完整实现,每道题都是独立可编译运行的模块(带.iml文件,适配IntelliJ IDEA),题目覆盖经典场景:两数之和、链表相加、最长公共前缀、二叉树中序遍历、单词搜索、合并K个升序链表、被围绕的区域、加油站等。涉及的数据结构包括单链表、二叉树、图、哈希表、栈和队列;算法策略涵盖双指针、BFS/DFS、动态规划、回溯、滑动窗口、位运算、排序与查找。所有代码均通过基础测试用例验证,不依赖外部框架,开箱即用。目录命名规范,如【094】【BinaryT

253

【高并发实战】基于AOP的自定义滑动窗口限流方案设计与实现

"针对传统固定窗口和漏桶算法在突发流量场景下的性能瓶颈,本文创新性地将AOP切面编程与滑动窗口算法相结合,设计出支持动态流量控制的高性能限流方案。通过自定义注解实现方法级精准限流,采用环形队列优化时间片管理,最终实现平均0.3ms的超低判断延迟。文章完整剖析滑动窗口的原子计数器设计、时间窗口动态滑动策略等核心实现,并附赠经过生产验证的源码及JMeter压测对比数据。"

Zyw907155124的博客 1707

安工大物联网信息处理-滑动窗口上的均匀采样算法.zip

安徽工业大学物联网信息处理课程设计-滑动窗口上的均匀采样算法的设计,有代码,c语言可以自己运行。

C语言中Uint8_t数据类型

C语言中好像没有这种数据类型,但是在实际应用的过程中,发现许多人的代码中都存在这种表示方式。其实uintX-t就是通过typedef定义的,利用预编译和typedef可提高效率也方便代码移植。总结如下: typedef unsigned char   uint8_t;     //无符号8位数     typedef signed   char   int8_t;      //有符号8位

飘飘花吹雪的专栏 2万+

Geant4 学习笔记(一):实现multi-thread多线程

简单修改实现Geant4多线程

weixin_52417815的博客 6084

戴维南和诺顿定理到底怎么选?一个实际维修案例讲透两种等效电路用法

本文通过工业电源模块维修案例,详细解析戴维南和诺顿定理在实际电路分析中的选择策略。针对电压敏感型故障、电流分配问题及功率传输异常,提供三大黄金法则,帮助工程师高效选择等效电路方法,提升故障排查效率。特别强调诺顿定理在电流分析中的优势。

weixin_31854867的博客 358

算法之滑动窗口

算法 滑动窗口 双指针 LeetCode

qq_40420720的博客 2287

从机械臂示教到厨房做饭:ACT模仿学习如何让机器人更“人性化”?

本文探讨了ACT(Action Chunking with Transformers)模仿学习技术如何让机器人更“人性化”,特别是在厨房等复杂场景中的应用。通过动作分块(Action Chunking)和时态融合(Temporal Ensemble)技术,机器人能够像人类一样记忆和执行复杂任务,如烹饪。文章还分析了ACT在家庭场景中的落地挑战及其在康复医疗、柔性制造等领域的跨领域应用潜力。

weixin_30613343的博客 255

003双端队列 - 两端均可操作的线性结构

需求名称:实现基于循环数组的双端队列,支持两端插入和删除。

平行教师朱宗晓的专栏 156

模拟IC设计实战:折叠式共源共栅放大器的参数优化与噪声抑制

本文深入探讨了折叠式共源共栅放大器的核心设计要点。针对低电压下增益与输出摆幅的矛盾,文章详细阐述了从套筒式结构转向折叠式结构的必要性,并重点分析了其参数优化与噪声抑制的实战方法。通过手把手的参数计算流程,指导如何平衡增益、带宽、摆幅与功耗。同时,深入剖析了噪声来源,强调了采用PMOS输入对管以抑制1/f噪声,并提供了针对共栅管及电流镜的噪声优化策略,是模拟IC设计中高性能放大器设计的实用指南。

vv45678的博客 978

uniapp - HBuilder提示adb: failed to install X Failure [INSTALL_ARSE_FAILED_NOT_APK:X(安装HBuilder调试基座失败)

安装HBuilderX调试基座失败,uniapp APP运行到手机adb: failed to install,Uniapp提示adb,uniapp ios 真机调试报错 uniapp安卓调试,Uniapp安装不了基座,手动安装基座,正在安装手机端HBuilder调试基座,点击运行到手机报错信息:基座无法正常安装,Uniapp-安装HBuilder调试基座失败解决方案,解决 HBuilderX 安卓基座安装失败的问题,显示adb报错,UniApp苹果真机运行调试(自定义基座,版本更新后/没有基座打开失败)如

🏆 前端领域优质创作者 8063

LeetCode刷题--点滴记录003

LeetCode刷题--不含有重复字符的最长子串长度

鲁棒最小二乘支持向量机 235

Python爬虫实战:基于最新技术爬取国家企业信用信息公示系统数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的国家企业信用信息公示系统爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、数据解析与存储等高级话题,最终实现一个完整的爬虫系统。文章包含大量实战代码示例,适合中高级Python开发者学习参考。网络爬虫(Web Crawler)是一种自动获取网页内容的程序,广泛应用于搜索引擎、数据分析和商业情报收集等领域。通用爬虫:如搜索引擎爬虫,广泛抓取互联网公开信息聚焦爬虫:针对特定领域或网站的数据采集增量式爬虫:只抓取更新内容,减少资源消耗。

2201_76125261的博客 2408

LeetCode_003-无重复字符的最长子串

一大把解决方案朝你扑来,总有一款适合你!

见习日志 394

第 8 篇:TMC2240 电机正反转实现|DIR 引脚控制 + 代码优化(稳定不抖动)

本文详细介绍了TMC2240电机驱动芯片的正反转实现方法,重点解决方向切换时的抖动和冲击问题。文章首先明确了硬件连接、基础配置和使能状态三个前提条件,然后阐述了DIR引脚电平控制方向的核心原理,提供了STM32的GPIO配置代码。针对方向切换时的电流冲击问题,作者提出了"停止-延迟-切换-启动"的平滑切换逻辑,并给出了包含方向枚举、转速控制和方向切换函数的完整代码实现方案。通过这种优化方法,可以有效避免电机在正反转切换时产生的抖动、冲击声和发热问题,实现稳定的双向控制。文章还提示了后续可

BackCatK Chen的博客 2078

【附代码】SSVEP解码算法 - 扩展典型相关分析(eCCA)

本文主要对SSVEP解码算法-eCCA进行复现和测试。本文提供程序的所有代码,只要在Matlab上即可运行。读者可以根据程序自主调整,方便学习以及初学者更好地了解SSVEP的经典算法。

计算机小白 1336

leetcode之路003 Longest Substring Without Repeating Characters

题目大意:很好理解,求最长的没有重复元素的子串的长度,例如:“abcabcbb”结果是abc,长度3,“bbbbb”结果时b,长度1. 思路:用hash_map做的,因为每次找下一个字符时,都需要从前面的子串中进行查找操作,利用hash_map达到快速查找。因为不需要要排序操作,因此程序中是用的unordered_map。 1.令最长的无重复子串长度为max,i从0循环到字符串长度减去max

yefengzhichen的博客 851

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

leetcode-3-无重复字符的最长子串(longest substring without repeating characters)-java

题目及测试 package pid003; /*无重复字符的最长子串 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 无重复字符的最长子串是 "b",其长度为 1。 示例 3: 输入: "pwwkew" ...

今天吃了吗的博客 268

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

CSP-S复赛集训:动态规划与图论精要解析,JavaScript 测试 jQuery。

HETAO CSP-S复赛模拟赛通常围绕NOI大纲核心算法设计,典型题目组合包括:动态规划优化、图论建模、数据结构应用及数学思维题。模拟赛-003的Ⅰ卷聚焦时间复杂度优化与边界条件处理,数据规模普遍在1e5级别。文章可进一步扩展具体题目示例和更多算法变种分析。Dijkstra算法时间复杂度:O((k+1)M log(k+1)N),空间复杂度O((k+1)N)给定长度为N的序列,要求分割为K段,每段权值为子序列极差,目标是最小化总权值。关键约束:N≤1e5,K≤100,需设计低于O(N2K)的算法。

2501_93981299的博客 371

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OpenAI API速率限制详解:从GPT-3.5到GPT-4,如何规划你的Token与请求预算

本文深入解析OpenAI API速率限制机制,从GPT-3.5到GPT-4的RPM和TPM差异,提供高效配额管理策略。通过动态权重分配、请求队列设计和流量整形技术,帮助开发者优化Token与请求预算,避免Rate limit报错,提升API使用效率。

weixin_30292843的博客 374

工程化算法:从理论复杂度到线上SLA的实战操作系统

算法在真实系统中不是静态知识,而是具备可观测性、熔断机制与性能契约的动态服务。理解时间复杂度实测差异、数据结构选型决策树等核心概念,是解决高并发下CPU飙升、缓存穿透、滑动窗口失真等工程问题的前提。其技术价值在于 bridging 理论最优与工程最优——例如JVM中TreeMap与HashMap的实际GC开销差可达8ms,直接影响支付链路超时。典型应用场景包括实时日志Top-K提取、用户标签交集计算、风控滑动窗口统计、相似召回及动态路由匹配。本文聚焦可即插即用的算法模块设计,覆盖边界条件防御、递归转迭代、哈

weixin_34295316的博客 324

Java高并发无锁化编程高吞吐场景下的算法实现与优化实战

在分布式系统、实时交易引擎及高吞吐量服务架构中,传统基于锁的并发机制因线程阻塞延迟和锁竞争导致的性能瓶颈问题日益突出。通过x86架构的cmpxchg8b指令实现跨线程可见性的原子操作,利用ECX:EBX寄存器对实现8字节CAS。1. 线程上下文切换开销:频繁的monitor enter/exit操作造成内核态-用户态切换,经Intel VTune分析,锁持有时间超过1微妙时切换概率高达92%该方案已成功应用于实时交易系统,在春节峰值期间支撑单表5200万TPS的记录,证明其在金融级低延迟场景中的有效性。

VtpjFpOn的博客 781

工程化遗传算法:从课堂脚本到生产级优化系统

遗传算法作为经典的元启发式优化方法,其核心价值在于解决复杂约束下的多目标参数寻优问题。然而,传统教学侧重生物隐喻与基础流程,忽视了计算资源限制、收敛可审计性、随机性可控性及业务可解释性等工程刚性约束。本文聚焦可部署的遗传算法系统设计,深入剖析种群规模与缓存效率的关系、双轨收敛判定机制、哈希驱动的确定性变异、结构化适应度反馈等关键技术,覆盖智能调度、工业参数整定、金融风控调参等典型落地场景,为算法工程师提供一套兼顾鲁棒性、可观测性与业务协同能力的实战框架。

weixin_34216107的博客 417

AI功能测试实战篇

边界词是指。

qq_45334136的博客 415

遗传算法工程化:适应度设计与多样性监控实战指南

遗传算法(GA)作为一种经典启发式优化方法,其核心价值不在于生物隐喻的直观性,而在于对复杂、非凸、多约束黑箱问题的搜索能力。理解其本质需回归搜索空间几何结构与算子动力学行为的耦合关系——选择即引力场生成,交叉即邻域跳跃,变异即扰动注入。技术价值体现在可校准、可诊断、可复现的工程控制能力,尤其在芯片布线、新能源调度、车间作业调度等工业场景中,传统梯度法失效时,GA成为关键替代方案。本文聚焦两大工程命脉:适应度函数设计的七重陷阱(如罚函数强度失配、多目标混淆)与种群多样性坍塌的实时判据(如汉明距离谱分析、多样性

weixin_34265814的博客 659
上一篇: D001-开发工具-SecureCRT
下一篇: D001-开发工具-Cubesuite+
Manon_des_sources
博客等级 码龄11年 11粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值