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)
相关推荐
martian6651 小时前
LeetCode算法领域经典入门题目之“Two Sum”问题
人工智能·算法·leetcode·医学影像
快去睡觉~4 小时前
力扣11:盛水最多的容器
算法·leetcode·职场和发展
夏天ccys8 小时前
LeetCode Day5 -- 栈、队列、堆
算法·leetcode···队列
茴香豆的茴116 小时前
转码刷 LeetCode 笔记[2]:203. 移除链表元素(python)
笔记·leetcode·链表
快去睡觉~1 天前
力扣109:有序链表转换二叉搜索树
算法·leetcode·链表
蒟蒻小袁1 天前
力扣面试150题--阶乘后的零,Pow(x,n)直线上最多的点
leetcode·面试·哈希算法
Q741_1472 天前
如何判断一个数是 2 的幂 / 3 的幂 / 4 的幂 / n 的幂 位运算 总结和思考 每日一题 C++的题解与思路
开发语言·c++·算法·leetcode·位运算·总结思考
我今晚不熬夜2 天前
使用单调栈解决力扣第42题--接雨水
java·数据结构·算法·leetcode
珍珠是蚌的眼泪2 天前
LeetCode_哈希表
leetcode·哈希表·快乐数·字母异位词
flashlight_hi2 天前
LeetCode 分类刷题:209. 长度最小的子数组
javascript·算法·leetcode