算法题——滑动窗口(图示+代码)

devtools/2024/10/18 6:02:05/

什么时候可以使用滑动窗口?

当我们尝试对一条题目进行暴力插解时,若发现

一、长度最小的子数组

题目链接:. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=O83Ahttps://leetcode.cn/problems/2VG8Kg/description/

解题思路:

代码实现:

class Solution {public int minSubArrayLen(int target, int[] nums) {int sum = 0;int minLength = Integer.MAX_VALUE;// 避免干扰,直接设为最大值int n = nums.length;for (int left = 0, right = 0; right < n; right++) {sum += nums[right];// 进窗口while (sum >= target) {//判断if (minLength > right - left + 1) {minLength = right - left + 1;}sum -= nums[left];//出窗口left++;}}return minLength == Integer.MAX_VALUE ? 0 : minLength;}
}

二、无重复字符的最长子串

题目链接:. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=O83Ahttps://leetcode.cn/problems/wtcaE1/

解题思路:

代码实现: 

class Solution {public int lengthOfLongestSubstring(String s) {// 先转化为字符数组,方便操作char[] array = s.toCharArray();int maxLength = 0;HashSet<Character> hashSet = new HashSet<>();int left = 0, right = 0;for (; right < array.length; right++) {while (hashSet.contains(array[right])) {if (maxLength < right - left) {// 出窗口前先判断是否需要更新maxLengthmaxLength = right - left;}hashSet.remove(array[left]);// 出窗口left++;}hashSet.add(array[right]);// 进窗口}//避免数组一直没有重复值,导致不能进入while循环导致结果错误if (maxLength < right - left) {return right - left;}return maxLength;}
}


http://www.ppmy.cn/devtools/118165.html

相关文章

安卓好软-----手机屏幕自动点击工具 无需root权限

工具可以设置后自动点击屏幕。可以用于一些操作。例如自动刷视频等等哦 工具介绍 一款可以帮你实现自动操作的软件。软件中你可以根据实际需要设置点击位置&#xff0c;可以是屏幕上的特定位置&#xff0c;也可以是按钮或控件。功能非常强大&#xff0c;但是操作非常简单&…

powerbi-L8-导入数据时候的动态列

背景&#xff1a; 在数据导入之后刷新的过程中出现了无法刷新的异常报错&#xff0c; 检查后发现是由于原始数据的列的名字变化导致了power BI在处理数据类型的时候 需求 处理方法是什么&#xff0c; &#xff1f; 方法 动态获取表格的列&#xff1a; 获取数据的时候&#xff…

【python】数据爬虫,抓取并分析豆瓣电影信息

url-lib-request模块获取HTML spider.py 网页下载&#xff0c;链接提取&#xff0c;数据存储 http请求&#xff1a; 网址url&#xff0c; http-header: (1)用户代理&#xff1b;(2)浏览器版本 网页下载用 urllib库。 # 将豆瓣电影top250的第一页下载import urllib.request …

记录:ubuntu20.04的安装和必要的开发准备

记录ubuntu20.04的安装和必要的开发准备 准备1. 安装ubuntu20.04时的Tips2. 屏幕亮度调节问题3. 解决 "No Wi-Fi Adapter Found"4. Nvidia Driver && cuda5. 修改安装源6. ssh 远程开发7. 安装 anaconda 准备 没有装双系统&#xff0c;只有 ubuntu20.04&…

Mysql的锁你了解哪些?

MySQL中的锁是用于控制多个用户对共享资源的并发访问&#xff0c;以确保数据的完整性和一致性。 一、按锁的性质分类 1. 乐观锁&#xff08;Optimistic Locking&#xff09; • 假设并发操作时不会发生冲突&#xff0c;只在提交事务时检查数据是否被其他事务修改过。 • 适用…

【Redis】分布式锁之 Redission

一、基于setnx实现的分布式锁问题 重入问题&#xff1a;获得锁的线程应能再次进入相同锁的代码块&#xff0c;可重入锁能防止死锁。例如在HashTable中&#xff0c;方法用synchronized修饰&#xff0c;若在一个方法内调用另一个方法&#xff0c;不可重入会导致死锁。而synchroni…

如何在Mac上查看剪贴板历史记录

重点摘要 macOS 内建的剪贴簿查看器可以透过 Finder 存取,但只能显示最近一次复制的内容,而且重新开机后就会清除。若要更进阶的剪贴簿管理,第三方 app 像是 CleanClip 提供了强大的功能和更好的组织方式。CleanClip 提供了全方位的剪贴簿历史管理解决方案,支援各种内容类型和…

爬虫----webpack

目录 一. 什么是webpack 出现的原因&#xff1a;同名函数 概念: 特征&#xff1a;大量缩进 webpack的格式 简单的webpack格式&#xff1a; 详细的webpack格式&#xff1a; 几个参数的运用 1. webpack数组形式 2. webpack对象格式 3.多个js文件打包 打印要扣的代码 …