10.《滑动窗口篇》---②长度最小的子数组(中等)

有了上一篇的基础。这道题我们就可以轻易分析可以使用滑动窗口来解决了

方法一:滑动窗口

这里注意 ret 在while循环外部更新

while 外部更新 ret,确保窗口在满足条件后再计算长度,避免错误计入正在调整中的窗口长度。

java 复制代码
class Solution {
    public int lengthOfLongestSubstring(String s0) {
        int[] hash = new int[128]; //数组模拟哈希表
        int n = s0.length();
        char[] s = s0.toCharArray();
        int ret = 0;

        for(int left = 0,right = 0; right < n; right++){
            hash[s[right]]++; //进入窗口
            while(hash[s[right]] > 1){
                hash[s[left++]]--;
            }
            ret = Math.max(ret,right-left+1);
        }
        return ret;
    }
}

复杂度分析

时间复杂度:O(n),

空间复杂度:

  • 常见分析: 空间复杂度为 O(1),因为哈希表是固定大小,额外空间使用与输入大小无关。
  • 严格分析 : 如果字符数组 chars 被视为额外空间,则空间复杂度为 O(n)
相关推荐
TracyCoder1234 分钟前
LeetCode Hot100(23/100)——142. 环形链表 II
算法·leetcode·链表
TracyCoder1231 小时前
LeetCode Hot100(28/100)——104. 二叉树的最大深度
算法·leetcode
执着2591 小时前
力扣hot100 - 101、对称二叉树
数据结构·算法·leetcode
Anastasiozzzz2 小时前
对抗大文件上传---分片加多重Hash判重
服务器·后端·算法·哈希算法
TracyCoder1233 小时前
LeetCode Hot100(24/100)——21. 合并两个有序链表
算法·leetcode·链表
Re.不晚3 小时前
深入底层理解HashMap——妙哉妙哉的结构!!
java·哈希算法
We་ct4 小时前
LeetCode 1. 两数之和:两种高效解法(双指针 + Map)
前端·算法·leetcode·typescript·哈希算法
YuTaoShao4 小时前
【LeetCode 每日一题】3640. 三段式数组 II——(解法二)DP
算法·leetcode·职场和发展
Grassto4 小时前
12 go.sum 是如何保证依赖安全的?校验机制源码解析
安全·golang·go·哈希算法·go module
TracyCoder1234 小时前
LeetCode Hot100(25/100)——2. 两数相加(链表)
算法·leetcode·链表