看了leetcode上的滑动窗口求区间长度k内的最大值,第一种解决方案就是使用暴力,每次都循环遍历长度为k的区间,这是作为一个程序员最基本的思维,最起码有解决方法,但是此方案的时间复杂度堪比灾难,o(n*n)的时间复杂度,肿么办,优化吧!
优化思路:
采用双端队列的方法来解决,具体思路就是,定义一个双端队列,用来存储比较的过程,队列中第一个数是队列中的最大数,后面的都是小于第一个的,每次从原数组中取一个数,与双端队列第一个数(最大数)进行比较,若大于第一个数就把队列清空,把这个数放入队列,若小于等于这个数,就把这个数放在队列的后面,这样能保证队列的第一个数一直是K区间内的最大数!