关于使用滑动窗口解决数组的一系列问题
在使用滑动窗口之前,我们需要知道什么是滑动窗口,它又能帮助我们解决什么样的问题? 为了理解滑动窗口是什么,我们先来看一个简单的例子,难度指数:简单 这道题在leetcode上也能找到:209 Mininum Size Subarray Sum ( l < arr. length if (sum < s && r+ 1 < arr. length else if min (res, r-l+ 1 if (res == arr. length + 1 ) return 0 ; return res; } public static void main(String[] args) { int [] nums = { 2 , 3 , 1 , 2 , 4 , 3 }; int s = 7 ; System. out .println( minSubArrayLen (s , nums)); }} 现在我们来看看下一个例子,难度:一般 可以看出,这道题和上一道思想上没有不同,都是创建一个滑动窗口来进行遍历,不过要注意的是这里使用的是一个freq[256]的整形数组来记录滑动窗口中字符的频率,而右边界r++,左边界l++的判断条件也不一样。可以总结出一个模板: int l = 0 , r = - 1 ; while ( l<s.length() ){ if else 创建一个滑动窗口