news 2026/9/5 6:40:53

常见面试题——滑动窗口算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
常见面试题——滑动窗口算法

按奇偶排序数组

题目理解

题目链接:按奇偶排序数组

简而言之就是把数组中所有偶数移到前面,奇数移到后面,返回任意满足条件的数组即可。

解题思路

双指针交换
用两个指针l(从0开始)和r(从l+ 1 开始)遍历数组:

  • 当 r 指向的是偶数,且 l 指向的是奇数 → 交换两者
  • 当 l 指向的是偶数 → l 右移(保证l左侧都是偶数)
  • r 不断右移遍历整个数组

代码详解

classSolution{public:vector<int>sortArrayByParity(vector<int>&nums){intn=nums.size();if(n==1){// 数组长度为1,直接返回returnnums;}intl=0;// 左指针,指向待交换的奇数位置intr=l+1;// 右指针,遍历数组找偶数while(r<n){// 右指针是偶数、左指针是奇数 → 交换if((nums[r]%2==0)&&(nums[l]%2==1)){swap(nums[r],nums[l]);}// 左指针是偶数 → 右移,扩大已排序的偶数区域if(nums[l]%2==0){l++;}r++;// 右指针继续遍历}returnnums;}};

找到字符串中所有字母异位词

题目理解

题目链接:找到字符串中所有字母异位词

给定字符串sp,找出 s 中所有是 p 的**字母异位词的子串,返回这些子串的起始索引。
(字母异位词:
字母相同但排列不同的字符串**)

解题思路

滑动窗口 + 哈希计数

因为只涉及小写字母,用两个长度为 26 的数组(hash1、hash2)分别统计 p 的字母频率、s 滑动窗口内的字母频率。通过维护一个count变量,记录窗口中有效匹配的字母数(即窗口中该字母的数量 ≤ p 中该字母的数量),当count 等于 p的长度时,说明当前窗口是 p 的异位词。

代码详解

classSolution{public:vector<int>findAnagrams(string s,string p){vector<int>ret;// 存储结果的起始索引inthash1[26]={0};// 统计p的字母频率// 第一步:初始化p的字母频率数组for(autoch:p){hash1[ch-'a']++;}inthash2[26]={0};// 统计滑动窗口内的字母频率intcount=0;// 记录窗口中有效匹配的字母数intp_len=p.size();// p的长度,用于窗口大小控制// 滑动窗口:r是右指针,l是左指针for(intl=0,r=0;r<s.size();r++){charcur=s[r];// 右指针扩大窗口:将当前字符加入hash2if(++hash2[cur-'a']<=hash1[cur-'a']){count++;// 该字符在p中且数量未超,有效匹配数+1}// 窗口大小超过p的长度,左指针缩小窗口if(r-l+1>p_len){charout=s[l++];// 左指针右移,弹出窗口左端字符if(hash2[out-'a']--<=hash1[out-'a']){count--;// 弹出的字符是有效匹配的,有效匹配数-1}}// 有效匹配数等于p的长度,说明当前窗口是异位词if(count==p_len){ret.push_back(l);// 记录起始索引l}}returnret;}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 4:24:02

面试官:MYSQL自增id超过int最大值怎么办?

当 MySQL 的自增主键&#xff08;AUTO_INCREMENT&#xff09;达到其数据类型的上限时&#xff08;例如 INT 有符号最大值 2147483647&#xff0c;无符号 4294967295&#xff09;&#xff0c;再插入新记录会失败&#xff0c;报错类似&#xff1a; Duplicate entry 2147483647 f…

作者头像 李华
网站建设 2026/9/4 3:26:45

AI自动解决iframe跨域问题:快马平台一键生成解决方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个完整的iframe跨域解决方案代码&#xff0c;要求&#xff1a;1.包含服务端CORS配置示例(Node.js/Express) 2.前端iframe通信的安全设置 3.支持跨域cookie传递 4.提供postM…

作者头像 李华
网站建设 2026/9/4 14:23:58

3、使用Puppet创建首个清单及资源管理指南

使用Puppet创建首个清单及资源管理指南 1. 引言 在服务器配置和管理工作中,自动化工具能显著提升效率和准确性。Puppet作为一款强大的自动化工具,可帮助我们轻松管理服务器的配置。本文将深入介绍如何使用Puppet创建首个清单,以及如何利用其资源类型(文件、包和服务)进行…

作者头像 李华
网站建设 2026/9/4 0:38:58

6、Puppet资源使用全解析

Puppet资源使用全解析 1. 服务资源管理 在Puppet中,服务资源管理有一些特殊的属性和用法。 - hasstatus属性 :当 hasstatus 为 false 时,Puppet不会使用默认的系统服务管理命令来检查服务状态,而是在进程表中查找与服务名称匹配的运行进程。如果找到匹配的进程,P…

作者头像 李华
网站建设 2026/9/2 21:51:46

探索基于LS-DYNA的弹体斜侵彻冲击起爆炸药模拟:从SALE方法到举一反三

视频录制 基于lsdyna的SALE方法弹体斜侵彻冲击起爆炸药(点火增长模型)&#xff0c;基于此视频可举一反三&#xff0c;解决冲击起爆ale/sale建模计算问题在爆炸力学与侵彻动力学领域&#xff0c;基于LS - DYNA的模拟研究有着重要地位。今天咱们就来聊聊基于LS - DYNA的SALE方法实…

作者头像 李华
网站建设 2026/9/4 14:04:47

图欧学习导航在K12教育中的实际应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个面向K12教育的图欧学习导航应用案例。系统需要包含学科知识点树状导航、错题自动归类与分析、学习进度可视化等功能。要求整合常见教材版本的知识点体系&#xff0c;支持拍…

作者头像 李华