滑动窗口(同向)同向双指针 leetcode713 3 1004 1234

news2024/10/3 2:27:05

同向双指针的理解

  • 双指针从同一侧开始走
  • 一般是right进行无脑遍历,left控制边界(导致模板化)
  • 深刻理解题目概念以及**(right - left +1)** 的含义
  • 多思考画图

模板

class Solution {
public:
    int numSubarrayProductLessThanK(vector<int>& nums, int k) {
        int count = 0;
        int left = 0;
        for(int right=0; right<nums.size(); right++)
        {
            while() // 条件自己加
            {
            }
            count += right - left + 1;
        }
        return count;
    }
};

具体还是要以题目为例

leetcode 713

在这里插入图片描述
在这里插入图片描述
几个关键点

  • 是正整数组
  • 要找连续子数组(同向双指针)

代码示例

完全模板化编程

class Solution {
public:
    int numSubarrayProductLessThanK(vector<int>& nums, int k) {
        int count = 0;
        int left = 0;
        int mul = 1;
        for(int right=0; right<nums.size(); right++)
        {
            mul *=nums[right];
            while(left<=right && mul>=k)
            {
                mul /= nums[left++];
            }
            count += right - left + 1;
        }
        return count;
    }
};

leetcode 3

在这里插入图片描述
几个关键点

  • 子串即连续子数组(同向双指针)
  • 不含有重复字符(letf与right中间的子串一定是不含有重复字母的)

代码示例

还是模板化的

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int left = 0;
        int max_size = 0;
        unordered_map<char, int> tmap;
        for(int right=0; right<s.size(); right++)
        {
            tmap[s[right]]++;
            while(tmap[s[right]]>1)
            {
                tmap[s[left]]--;
                left++;
            }
            max_size = max_size < right - left+1 ? right-left+1 : max_size;
        }
        return max_size;
    }
};

leetcode 1004

在这里插入图片描述
几个关键点

  • 返回连续1的个数 即也是一个子串问题
  • 滑动窗口之中永远是满足条件的1的个数

代码示例

class Solution {
public:
    int longestOnes(vector<int>& nums, int k) {
        int left = 0;
        int count = 0;
        int res = 0;
        for(int right=0; right<nums.size(); right++)
        {
            count += 1 - nums[right];
            while(count > k)
            {
                count -= 1 - nums[left];
                left++;
            }
            res  = res > right - left + 1 ? res : right - left + 1;
        }
        return res;
    }
};

leetcode 1234

在这里插入图片描述
这道题核心我觉得是看清题目的意思
几个关键点

  • 是用替换子串的方式进行变换(子串即同向双指针)
  • 滑动窗口之外的各个字符数量<=m的话就可以通过替换(窗口内有>m的就不能替换)
  • 不断更新最小值即可

代码示例

class Solution {
public:
    int balancedString(string s) {
        int n = s.length();
        int m = n / 4;
        unordered_map<char, int> tmap;
        for(int i=0; i<s.size(); i++)
        {
            ++tmap[s[i]];
        }
        if (tmap['Q'] == m && tmap['W'] == m && tmap['E'] == m && tmap['R'] == m)
            return 0; 
        int res = n, left = 0;
        for (int right = 0; right < n; right++) { // 枚举子串右端点
            --tmap[s[right]];
            // 判断窗口外的情况
            while (tmap['Q'] <= m && tmap['W'] <= m && tmap['E'] <= m && tmap['R'] <= m) {
                res = min(res, right - left + 1);
                ++tmap[s[left++]]; // 缩小子串
            }
        }
        return res;
    }
};

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

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

相关文章

NLP中一些工具列举

文章目录StanfordcoreNLPStanzaTankitspaCySuPar总结StanfordcoreNLP 这个老早就出来了&#xff0c;用java写的&#xff0c;但是已经有很多比他效果好的了。 Stanza 2020ACL发表的&#xff0c;看名字就知道和上一个是同一家的。 用已经切好词的句子进行依存分析。 这个功能…

百度“文心一言”携手酷开科技,实现AI智能领域新突破!

进入21世纪&#xff0c;AI人工智能一直都是讨论度非常高的话题之一&#xff0c;各行各业的领导者都开始在智能领域进行了初步探索&#xff0c;这也证明了AI人工智能在未来一定会在很大程度上影响我们的生活、工作。 近日&#xff0c;深圳市酷开网络科技股份有限公司成为百度文…

Kuangbin 线性DP 最大和加强加强版

呃呃&#xff0c;一道题写了我一下午4546. 最大和加强加强版 - AcWing题库题意&#xff1a;思路&#xff1a;首先这道题没有明显的阶段&#xff0c;因此状态设计不能按照阶段去设计我们按照题目给的量去设计状态&#xff1a;设dp[i][j]为考虑前i个数分为j组的最大可能和如果这样…

百度前端二面vue面试题指南

Vue 组件间通信有哪几种方式&#xff1f; ​ Vue 组件间通信是面试常考的知识点之一&#xff0c;这题有点类似于开放题&#xff0c;你回答出越多方法当然越加分&#xff0c;表明你对 Vue 掌握的越熟练。Vue 组件间通信只要指以下 3 类通信&#xff1a;父子组件通信、隔代组件通…

5个好用的视频素材网站

推荐五个高质量视频素材网站&#xff0c;免费、可商用&#xff0c;赶紧收藏起来&#xff01; 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 网站素材非常丰富&#xff0c;有平面、UI、电商、办公、视频、音频等相关素材&#xff0c;视频素材质量很高&#xff0c;全部都是…

Java——异常

目录 什么是异常 异常处理主要的5个关键字 异常的体系结构 异常语法 异常的分类 异常的处理流程 异常的处理 防御式编程 异常的抛出 throw的注意事项 异常的捕获 异常声明throws try-catch捕获处理 finally 自定义异常类 throw和throws区别 什么是异常 程序在运行时出现错…

什么情况下Java程序会产生死锁?如何定位、修复?

第18讲 | 什么情况下Java程序会产生死锁&#xff1f;如何定位、修复&#xff1f; 今天&#xff0c;我会介绍一些日常开发中类似线程死锁等问题的排查经验&#xff0c;并选择一两个我自己修复过或者诊断过的核心类库死锁问题作为例子&#xff0c;希望不仅能在面试时&#xff0c;…

NOC2021年测试卷1

一、单项选择题(共15题,每题3分,共45分) 1.下列应用不能体现人工智能技术的是()。 A、使用语音输入法输入文字B、使用OCR软件从图像中识别汉字C、某软件支持在线中英文互译D、某网站自动统计歌曲下载次数2.点击绿旗执行图中的脚本,若角色的坐标为 (25, 20) ,则说出的内…

元数据管理实践数据血缘

元数据管理实践&数据血缘 什么是元数据&#xff1f;元数据MetaData狭义的解释是用来描述数据的数据&#xff0c;广义的来看&#xff0c;除了业务逻辑直接读写处理的那些业务数据&#xff0c;所有其它用来维持整个系统运转所需的信息&#xff0f;数据都可以叫作元数据。比如…

微服务一 实用篇 - 2. SpringCloud02

《微服务一 实用篇 - 2. SpringCloud02》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 2. SpringCloud02》《微服务一 实用篇 - 2. SpringCloud02》1.Nacos配置管理1.1.统一配置管理1.1.1.在nacos中添加配置文件1.1.2.从微服务拉取…

GaN/氮化镓65W(1A2C)PD快充电源方案

近期美阔电子推出了一款全新的氮化镓65W&#xff08;1A2C&#xff09;PD快充充电器方案&#xff0c;该方案采用同系列控制单晶片&#xff1a;QR一次侧控制IC驱动MTCD-mode GaN FET(MGZ31N65-650V)、二次侧同步整流控制IC及PD3.0协议IC)可达到最佳匹配。 GaN/氮化镓作为第三代半…

IDEA中开发Android完整示例及APK的生成(包含用户名密码输入获取等操作)

先看看运行演示程序效果&#xff1a; 输入内容并点击确定按钮效果如下图, &#xff08;已测试传到真机中安装运行效果一模一样兼容基本所有安卓版本&#xff1a;&#xff09; 实现步骤如下&#xff1a; 1,先安装AndroidSDK 点击File->new project->Android 这个因为我…

TSBS 是什么?为什么时序数据库 TDengine 会选择它作为性能对比测试平台?

TSBS 是一个时序数据处理&#xff08;数据库&#xff09;系统的性能基准测试平台&#xff0c;提供了 IoT、DevOps 两个典型应用场景&#xff0c;它由 Timescale 开源并负责维护。作为一个性能基准测试平台&#xff0c;TSBS 具有便捷、易用、扩展灵活等特点&#xff0c;涵盖了时…

MySQL卸载教程(详细)

系列文章 C#项目–业务单据号生成器&#xff08;定义规则、自动编号、流水号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 C#项目–开始日期结束日期范围计算&#xff08;上周、本周、明年、前年等&#xff09; 本文链接&…

taobao.open.account.update( Open Account数据更新 )

&#xffe5;开放平台免费API不需用户授权 Open Account数据更新 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 响应参数 点击获取key和secret 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, sec…

2022 年江西省职业院校技能大赛高职组“信息安全管理与评估”赛项样题

2022 年江西省职业院校技能大赛高职组 “信息安全管理与评估”赛项样题 一、 赛项信息 第一场比赛&#xff1a; 竞赛阶段 任务阶 段 竞赛任务 竞赛时 间 分值 第一阶段 任务 1 网络平台搭建 90 平台搭建与安全 任务 2 网络安全设备配置与防护 210 设备配置防护…

【调试方法】基于vs环境下的实用调试技巧

前言&#xff1a; 对万千程序猿来说&#xff0c;在这个世界上如果有比写程序更痛苦的事情&#xff0c;那一定是亲手找出自己编写的程序中的bug&#xff08;漏洞&#xff09;。作为新手在我们日常写代码中&#xff0c;经常会出现报错的情况&#xff08;好的程序员只是比我们见过…

4.排序算法之一:冒泡排序

排序算法稳定性假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&#xff0c;这些记录的相对次序保持不变&#xff0c;即在原序列中&#xff0c;r[i]r[j]&#xff0c;且r[i]在r[j]之前&#xff0c;而在排序后的序列中&#xff0c;r[…

操作系统权限提升(二十一)之Linux提权-环境变量劫持提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 操作系统权限提升(十九)之Linux提权-SUID提权 操作系统权限提升(二十)之Linux提权-计划任务提权 环境变量劫持提权 环境变量劫持提权原理 PATH是Linux和类Unix操作系统中的环境变量&#xff0c;类似windows中的path环…

蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访

今年春节档&#xff0c;科幻类电影《流浪地球2》票房口碑双丰收&#xff0c;截至目前&#xff0c;累计票房已破 38 亿&#xff0c;淘票票评分 9.6 &#xff0c;影片的特效质感可以媲美国际顶尖水平。其中&#xff0c;蓝海彤翔为影片的后期制作提供了出色的渲染服务。2月21日&am…